Ich habe versucht, HTML5-Code zu analysieren, damit ich Attribute / Werte innerhalb des Codes festlegen kann, aber es scheint, dass DOMDocument (PHP5.3) Tags wie <nav>
und nicht unterstützt <section>
.
Gibt es eine Möglichkeit, dies als HTML in PHP zu analysieren und den Code zu manipulieren?
Zu reproduzierender Code:
<?php
$dom = new DOMDocument();
$dom->loadHTML("<!DOCTYPE HTML>
<html><head><title>test</title></head>
<body>
<nav>
<ul>
<li>first
<li>second
</ul>
</nav>
<section>
...
</section>
</body>
</html>");
Error
Warnung: DOMDocument :: loadHTML (): Tag nav in Entity ungültig, Zeile: 4 in /home/wbkrnl/public_html/new-mvc/1.php in Zeile 17
Warnung: DOMDocument :: loadHTML (): Tag-Abschnitt in Entität ungültig, Zeile: 10 in /home/wbkrnl/public_html/new-mvc/1.php in Zeile 17
php
html
domdocument
Klaas Sangers
quelle
quelle
loadHTML($HTML5)
gibt FALSE (Fehler) zurück! Ich muss die neuen Tags in DIVs ändern ... Es ist nicht nur ein Problem von "Warnungen" auf meinem Bildschirm.Antworten:
Nein, es gibt keine Möglichkeit, einen bestimmten zu verwendenden Doctype anzugeben oder die Anforderungen des vorhandenen zu ändern.
Ihre beste praktikable Lösung besteht darin, die Fehlerberichterstattung zu deaktivieren mit
libxml_use_internal_errors
:quelle
loadHTML($HTML5)
gibt FALSE (Fehler) zurück! Ich muss die neuen Tags in DIVs ändern ...loadHTML
akzeptiert jedoch jetzt tatsächlich HTML5-Tags.Sie könnten auch tun
quelle
@
oderlibxml_*
) istSie können die Fehler filtern, die Sie vom Parser erhalten. Deaktivieren Sie gemäß den anderen Antworten hier die Fehlerberichterstattung auf dem Bildschirm, durchlaufen Sie die Fehler und zeigen Sie nur die gewünschten an:
Hier ist
print_r()
ein einzelner Fehler:Durch Matching auf dem
message
und / oder demcode
können diese ganz einfach herausgefiltert werden.quelle
Es scheint keine Möglichkeit zu geben, Warnungen zu töten, aber keine Fehler. PHP hat Konstanten, die dies tun sollen, aber sie scheinen nicht zu funktionieren. Hier ist, was funktionieren sollte, aber nicht, weil (Fehler?) ....
http://php.net/manual/en/libxml.constants.php
quelle
Das hat bei mir funktioniert:
Wenn Sie das Header-Tag benötigen, ändern Sie den Header durch ein div-Tag und verwenden Sie eine ID. Zum Beispiel:
Es ist nicht die beste Lösung, aber je nach Situation kann es nützlich sein.
Viel Glück.
quelle
HTML5-Tags verwenden fast immer Attribute wie ID, Klasse usw. Der Code zum Ersetzen lautet also:
quelle