Web 上早期流行的 BBCode 就是一種簡易的 HTML 代碼,除了讓使用者方便輸入,程式上也可以省去處理 HTML tag 的麻煩。
近年來在 HTMLArea、FCKeditor 等免費又功能強大的 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 就可以派上用場了。
不過看官方網站上並沒有 PHP 的版本怎麼辦?
其實 PHP 5 有已經有把 HTML Tidy Library 包在裡面了,PHP 4 也可以下載 PECL 套件來安裝,詳細的安裝方式及可以參考:
不過 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,整個畫面都被撐開了:
罪魁禍首在下面:
2 comments On [PHP] 利用 tidy 整理 HTML 標籤代碼
滿不錯的資訊,小弟想請教Neo,發PHP4 的Tidy 1.1真的不夠用,是否有辦法把php4的Tidy升級到2.0呢
剛剛看 PCHOME 已經把原來的問題改好了,呵呵。^^
mote:
可能要自己下載 2.0 編譯成 so 檔,只是我沒試過,如果成功的話歡迎回來分享。
– compile and install libtidy
– compile and install with php_tidy
– add the extension=tidy.so line
摘自:
http://www.webmasterworld.com/forum88/4599.htm