2011-07-31 29 views
6

używam php porządek przetwarzać dane wejściowe HTML w mojej bazy danych,Alternatywa dla php tidy?

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

mam ten php_tidy włączona w moim serwerze, ale mój serwer na żywo nie obsługuje schludny,

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

Wszelkie alternatywę Muszę rozwiązać ten problem?

+0

Może tylko sposób OO działa: '$ schludny schludny = new(); $ clean = $ tidy-> repairString ($ dom-> saveHTML(), ...); ' – Rudie

+0

nope ... ale znalazłem inne rozwiązanie tego, które już używa regex ... dzięki! – laukok

Odpowiedz

4

HTML Purifier może przepisać HTML, aby był zgodny ze standardami like HTML Tidy. Jeśli chcesz filtrować to wejście w celu zapobiegania XSS itp., Zrobi to również.

To wszystko PHP, więc powinieneś być w stanie używać go na dowolnym serwerze.

+0

HTML Purifier opiera się na php-tidy AFAIK. –

+0

Nie wydaje się, że jest: "nie potrzebujesz Tidy zainstalowanego na PHP, aby móc korzystać z tych funkcji!" z http://htmlpurifier.org/docs/enduser-tidy.html – gaborous

5

Jeśli jesteś na polu linux RedHat/CentOS/Fedora i mieć dostęp do katalogu głównego serwera można uruchomić ...

yum install php-tidy 

jako root. Następnie zrestartuj Apache, a to powinno Cię przyspieszyć.

Mogą występować błędy związane z brakującymi zależnościami, które należy dodać, ale zwykle powyższe polecenie będzie wszystkim, czego potrzebujesz.

Inne dystrybucje będą miały nieco inne polecenia, ale coś podobnego powinno być dostępne.

W oknach należy zainstalować ręcznie. Instrukcje można znaleźć tutaj ... http://devzone.zend.com/article/761#Heading3

+0

Byłby to host współdzielony, poza tym sam zrobił to sam. – Alto

8

Znalazłem htmLawed bardzo szybko. Znalazłem go, gdy szukałem alternatywy dla HTMLPurifier, który był bardzo powolny.

+0

htmLawed jest dla mnie zwycięzcą. Używam go w witrynie Moodle, ponieważ otrzymuję tę samą "niezdefiniowaną funkcję tidy_repair_string()" błąd. –

5

Albo po prostu przechodzić przez obiekt DOMDocument:

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

Dziękuję, uratowałeś mnie. FYI 'libxml_use_internal_errors (true);' będzie tłumić ostrzeżenia php generowane przez zły HTML. –

+0

Działa świetnie! Dzięki! – gaborous

+0

czy to nie zmienia twoich charecterów? jak wypróbować cały zestaw ASCII ... – visualex