之前處理某個社群網站部落格的程式時,遇到一個惱人的問題。由於我們為了閱讀方便,並不會將整篇文章在文章彙整模式列出,而是將部分文章內容取出。
好了,你會怎麼作?一般來說,最直覺的是使用 mb_substr()
將欄位內容取出,但萬一使用者寫的這篇內容包含了表格 (table
) 會怎樣呢?(無論他是有意還是無意)剛好截到某個 td
標籤的一半,那整個版面可能就這樣亂掉了。
當然把標籤去掉再輸出也是個作法,但這樣並不是個好解法。
當時 Google 到了一個不錯的方案,就是 php 的 tidy 套件。
但似乎並無內建,需自己手動安裝一下。安裝在此就不贅述了。
記錄一下用法:
<?php
$html = "<b>aaa</i>aaaaaa<h1>aaaaaa</h5><h2>";
$configs = array('indent' => TRUE, // 這是讓 HTML 標籤以縮排漂亮地排列
'show-body-only' => TRUE, // 不要輸出包含 <html> 的完整結構,單單輸出我們要的部分就好
'wrap' => 200); // 字串寬度
// 詳細設定請參考 http://tidy.sourceforge.net/docs/quickref.html
$tidy = tidy_parse_string($html, $configs, 'UTF8');
echo $tidy;
echo "<pre>";
print_r($tidy->getConfig());
echo "</pre>";
?>