2011-07-31 2 views
6

php tidyの代わりに?私は、データベース内のHTML入力を処理するためにきちんとPHPを使用

$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

たぶん唯一のオブジェクト指向の方法が動作します: '$整頓=新しい整頓(); $ clean = $ tidy-> repairString($ dom-> saveHTML()、...); ' – Rudie

+0

これは既に正規表現を使っている別の解決策を見つけました...ありがとう! – laukok

答えて

4

HTML Purifierは、HTMLを標準に準拠するように書き換えることができますlike HTML Tidy。 XSS防止などのためにその入力をフィルタリングする必要がある場合は、それも同様に行います。

すべてのPHPですので、どのサーバーでも使用できるはずです。あなたがRedHatの/ CentOSの/のFedora Linuxボックス上にあり、あなたが実行することができ、サーバーへのrootアクセス権を持っている場合は

+0

HTML Purifierはphp-tidy AFAIKに依存しています。 –

+0

いいえそうではありません: "これらの機能を使用するには、PHPにTidyをインストールする必要はありません!" http://htmlpurifier.org/docs/enduser-tidy.html – gaborous

5

...ルートとして

yum install php-tidy 

。その後、Apacheを再起動すると、それはあなたを得る必要があります。

追加する必要のある依存関係が見つからないことにはエラーがあるかもしれませんが、通常は上記のコマンドが必要です。

他のディストリビューションではコマンドが少し異なりますが、同様のものがあります。

Windowsでは、手動でインストールする必要があります。手順はここにあります。http://devzone.zend.com/article/761#Heading3

+0

それ以外の場合は、共有ホストになります。 – Alto

8

私はhtmLawedが非常に高速であることがわかりました。私はHTMLPurifierの代わりに非常に遅いものを探していました。

+0

htmLawedが私の勝者です。私はMoodleサイトでそれを使用しています。なぜなら、同じ "未定義関数tidy_repair_string()"エラーが発生するからです。 –

5

それとも単にDOMDocumentオブジェクトを通過:

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

ありがとう、私を救った。 FYI 'libxml_use_internal_errors(true);'は、不正なHTMLによって生成されたPHP警告を抑制します。 –

+0

素晴らしい作品です!ありがとう! – gaborous

+0

これはあなたのチャレーターを変えませんか? – visualex

関連する問題