2011-07-31 87 views
6

我使用PHP整潔處理HTML輸入我的數據庫,替代php tidy?

$fragment = tidy_repair_string($dom->saveHTML(), array('output-xhtml'=>1,'show-body-only'=>1)); 

我有這個php_tidy在我的服務器開啓,但我活的服務器不支持整齊,

Fatal error: Call to undefined function tidy_repair_string() in /customers/0/5/a/mysite.com/httpd.www/models/functions.php on line 587

任何可替代我必須解決這個問題?

+0

也許只有OO方式運行:'$整潔=新整潔();$ clean = $ tidy-> repairString($ dom-> saveHTML(),...);' – Rudie

+0

nope ...但是我發現了另一個已經使用正則表達式的解決方案...謝謝! – laukok

回答

4

HTML Purifier可以將HTML重寫爲符合標準的like HTML Tidy。如果您需要過濾該輸入以進行XSS預防等,它也會這樣做。

這都是PHP,所以你應該可以在任何服務器上使用它。

+0

HTML淨化器依賴於php-tidy AFAIK。 –

+0

不,看起來不是: 「你不需要在PHP上安裝Tidy來使用這些功能!」從http://htmlpurifier.org/docs/enduser-tidy.html – gaborous

5

如果你是在一個RedHat/CentOS的/ Fedora的Linux機器,並具有root訪問您的服務器可以運行...

yum install php-tidy 

爲根。然後重新啓動Apache,這應該讓你去。

可能存在關於需要添加的缺少依賴關係的錯誤,但通常上述命令將是您所需要的。

其他發行版將有略微不同的命令,但應該提供類似的東西。

在Windows上,您需要手動安裝它。說明可以在這裏找到... http://devzone.zend.com/article/761#Heading3

+0

這將是一個共享的主機,否則teelou做了他/她自己。 – Alto

8

我發現htmLawed要非常快。我在尋找替代HTMLPurifier時發現它很慢。

+0

htmLawed是我的贏家。我在Moodle網站中使用它,因爲得到相同的「未定義函數tidy_repair_string()」錯誤。 –

5

或者只是簡單地通過DOM文檔對象:

$dirty = "<xml>some content</xml>" 
$x = new DOMDocument; 
$x->loadHTML($dirty); 
$clean = $x->saveXML(); 
+2

謝謝,救了我。僅供參考'libxml_use_internal_errors(true);'將抑制由錯誤的HTML生成的php警告。 –

+0

工程太棒了!謝謝! – gaborous

+0

這不會改變你的文字記錄器嗎?像嘗試整個ascii集... – visualex