[PHP] 利用 tidy 整理 HTML 標籤代碼

Web 上早期流行的 BBCode 就是一種簡易的 HTML 代碼,除了讓使用者方便輸入,程式上也可以省去處理 HTML tag 的麻煩。


近年來在 HTMLAreaFCKeditor 等免費又功能強大的 WYSWYG 編輯器壓境下,BBCode 已有日漸式微的趨勢。

若要開放 HTML 給使用者,在程式設計上對於 HTML 的處理就要更加用心,否則使用者的 HTML 碼很容易就會把整個版面給破壞掉。

舉個例子像:

<TABLE border=”1″>
<TR>
<TD>頁首</TD>
</TR>
<TR>
<TD>
<!– 使用者輸入開始 –>
我來亂的!
</TABLE>

<!– 使用者輸入結束 –>
</TD>
</TR>
<TR>
<TD>頁尾</TD>
</TR>
</TABLE>

紅字的部份很明顯使用者只要下一個</TABLE>,畫面就不是我們想看到的樣子了。

如果要一個個去檢核實在很累,這時 HTML Tidy Library 就可以派上用場了。

http://tidy.sourceforge.net/

不過看官方網站上並沒有 PHP 的版本怎麼辦?

其實 PHP 5 有已經有把 HTML Tidy Library 包在裡面了,PHP 4 也可以下載 PECL 套件來安裝,詳細的安裝方式及可以參考:

http://tw2.php.net/tidy

不過 PHP 4 上的 tidy 套件只出到 1.1,PHP 5 內建的 tidy 2.0 可以說是最完整好用的,像最實用的tidy_repair_string 修復函數,範例可以參考官方說明:

http://php.nctu.edu.tw/manual/en/function.tidy-repair-string.php

當然除了 HTML 結構要完整,還有很多細節都必須要處理好。如 PCHOME 的拍賣就沒有 Yahoo! 拍賣處理的乾淨,可以看看他們的版面完全被使用者玩爛了:

http://goods.bid.pchome.com.tw/item/show?10050318876304

我的解析度是 1024*768,整個畫面都被撐開了:

20050518_04.gif

罪魁禍首在下面:

20050518_05.gif

2 comments On [PHP] 利用 tidy 整理 HTML 標籤代碼

Leave a reply:

Your email address will not be published.

Site Footer

Sliding Sidebar