2011-07-31 11 views
6

yo uso php ordenada para procesar la entrada html en mi base de datos,¿Una alternativa a php tidy?

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

He este php_tidy encendido en mi servidor, pero mi servidor vivo no admite ordenado,

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

Cualquier alternativa puede Tengo que arreglar este problema?

+0

Tal vez sólo la forma OO funciona: '$ ordenada = new ordenado(); $ clean = $ tidy-> repairString ($ dom-> saveHTML(), ...); ' – Rudie

+0

no ... pero encontré otra solución para esto que ya usa regex ... ¡gracias! – laukok

Respuesta

4

HTML Purifier puede reescribir HTML para que sea compatible con los estándares like HTML Tidy. Si necesita filtrar esa entrada para la prevención de XSS, etc., también lo hará.

Todo es PHP, por lo que debería poder usarlo en cualquier servidor.

+0

HTML Purifier confía en php-tidy AFAIK. –

+0

No, parece que no: "¡no necesita Tidy instalado en su PHP para usar estas funciones!" de http://htmlpurifier.org/docs/enduser-tidy.html – gaborous

5

Si está trabajando en una máquina Linux RedHat/CentOS/Fedora y tener acceso root a su servidor puede ejecutar ...

yum install php-tidy 

como root. Luego reinicia apache y eso debería ayudarte.

Puede haber errores acerca de las dependencias faltantes que deben agregarse, pero generalmente el comando anterior será todo lo que necesita.

Otras distribuciones tendrán comandos ligeramente diferentes, pero algo similar debería estar disponible.

En Windows necesita instalarlo manualmente. Las instrucciones se pueden encontrar aquí ... http://devzone.zend.com/article/761#Heading3

+0

Sería un host compartido o lo harías tú mismo. – Alto

8

Encontré htmLawed para ser muy rápido. Lo encontré cuando buscaba una alternativa a HTMLPurifier, que era muy lenta.

+0

htmLawed es el ganador para mí. Lo estoy usando en un sitio de Moodle, porque aparece el mismo error de "función no definida tidy_repair_string()". –

5

O simplemente pasar a través del objeto DOMDocument:

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

Gracias, me salvaste. FYI 'libxml_use_internal_errors (true);' suprimirá las advertencias de php generadas por HTML incorrecto. –

+0

¡Funciona muy bien! ¡Gracias! – gaborous

+0

¿esto no cambia sus charecters? como probar todo el conjunto ascii ... – visualex