2016-12-01 2 views
2

Wenn ich jetzt das DOMDocument-Objekt verwende und saveHTML() aufruft, fügt es automatisch einige HTML-Tags hinzu, die ich nicht möchte. Ich habe versucht, hier die Lösung vorgeschlagen (https://stackoverflow.com/a/31426408/3659230) und wenn ich bekomme ich diesen Fehler:DOMDocument :: loadHTML() erwartet, dass Parameter 2 lang ist, Zeichenfolge beim Versuch, den Parameter LIBXML_HTML_NOIMPLIED zu verwenden

DOMDocument :: loadhtml() erwartet Parameter 2 zu lange, schnur gegeben

$doc = new DOMDocument(); 
libxml_use_internal_errors(true); 
$doc->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'), LIBXML_HTML_NOIMPLIED|LIBXML_HTML_NODEFDTD); 

Scheint ziemlich einfach, aber Ich kann es nicht zur Arbeit bringen. Ich verwende PHP Version 5.5.3

Antwort

0

Die LIBXML_HTML_NOIMPLIED und LIBXML_HTML_NODEFDTD sind nur ab PHP 5.4 definiert.

Wenn eine Konstante nicht definiert ist, behandelt PHP (idiotisch) sie als String. Also auf PHP 5.3 und unten, Ihr Code ist eigentlich

$doc->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'), 'LIBXML_HTML_NOIMPLIED'|'LIBXML_HTML_NODEFDTD'); 

oder, sobald der bitweise Operator ausgeführt worden ist:

$doc->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'), 'LIBXML_HTML_NOMMVL]ED'); 

Welche ist offensichtlich nicht das, was Sie beabsichtigen! Ihre beste Option ist, wenn möglich, auf eine neuere Version von PHP zu aktualisieren.

+0

Ich benutze PHP-Version 5.5.3, so scheint es nicht ein Versions-Problem. – dpst

+0

@dpst Können Sie die Version von libxml dann überprüfen? 'var_dump (LIBXML_DOTTED_VERSION);' – lonesomeday

+0

die libxml-Version ist 2.7.6 – dpst

Verwandte Themen