estoy usando DOMDocument de PHP para analizar y normalizar HTML enviado por el usuario usando el método loadHTML
para analizar el contenido a continuación, obtener un resultado bien formado a través de saveHTML
:PHP DOMDocument - obtener código fuente HTML de CUERPO
$dom= new DOMDocument();
$dom->loadHTML('<div><p>Hello World');
$well_formed= $dom->saveHTML();
echo($well_formed);
Hace un trabajo excelente al analizar el fragmento y agregar las etiquetas de cierre correspondientes. El problema es que también estoy recibiendo un montón de etiquetas que no quiero, como <!DOCTYPE>
, <html>
, <head>
y <body>
. Entiendo que cada documento HTML bien formado necesita estas etiquetas, pero el fragmento HTML que estoy normalizando se va a insertar en un documento válido existente.
Hay buena información aquí, pero me gustaría argumento de que DOMDocument sigue siendo una de fiar herramienta para esto. La existencia de un método "loadHTML" implica que DOMDocument está destinado a analizar documentos HTML y XML. HTMLPurifier u otros analizadores de HTML "verdaderos" escritos en PHP son geniales, pero su perf. siempre va a palidecer en comparación con los objetos PHP integrados. –
@ Alan: Estoy de acuerdo en que DOMDocument es excelente a la hora de analizar documentos HTML ;;; pero para las porciones de HTML, especialmente ** enviado por el usuario **, creo que HTMLPurifier es una herramienta mejor: se ha creado exactamente con el objetivo de filtrar el HTML enviado por el usuario, incluso desde un punto de vista de seguridad * (Por ejemplo, DOMDocument no le importa XSS, mientras que HTMLPurifier lo hace ;;; DOMDocument no le permite especificar qué etiquetas/atributos deben permitirse, mientras que HTMLPUrifier lo hace) * –