Próbowałem przeanalizować kod HTML5, aby ustawić atrybuty / wartości w kodzie, ale wygląda na to, że DOMDocument (PHP5.3) nie obsługuje tagów takich jak <nav>
i <section>
.
Czy istnieje sposób, aby przeanalizować to jako HTML w PHP i manipulować kodem?
Kod do odtworzenia:
<?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>");
Błąd
Ostrzeżenie: DOMDocument :: loadHTML (): Tag nav nieprawidłowy w Entity, wiersz: 4 w /home/wbkrnl/public_html/new-mvc/1.php w wierszu 17
Ostrzeżenie: DOMDocument :: loadHTML (): sekcja tagów nieprawidłowa w Entity, wiersz: 10 w /home/wbkrnl/public_html/new-mvc/1.php w wierszu 17
php
html
domdocument
Klaas Sangers
źródło
źródło
loadHTML($HTML5)
zwraca FALSE (błąd)! Muszę zmienić nowe tagi na DIV ... To nie tylko problem "ostrzeżeń" na moim ekranie.Odpowiedzi:
Nie, nie ma sposobu, aby określić konkretny typ dokumentu do użycia lub zmodyfikować wymagania istniejącego.
Najlepszym wykonalnym rozwiązaniem będzie wyłączenie raportowania błędów za pomocą
libxml_use_internal_errors
:źródło
loadHTML($HTML5)
zwraca FALSE (błąd)! Muszę zmienić nowe tagi na DIV ...loadHTML
teraz akceptują tagi HTML5.Ty też możesz to zrobić
źródło
@
lublibxml_*
)Możesz filtrować błędy otrzymane z parsera. Podobnie jak w przypadku innych odpowiedzi tutaj, wyłącz raportowanie błędów na ekranie, a następnie powtórz błędy i wyświetlaj tylko te, które chcesz:
Oto
print_r()
pojedynczy błąd:Dopasowując się do
message
i / lubcode
, można je dość łatwo odfiltrować.źródło
Wydaje się, że nie ma sposobu na zabicie ostrzeżeń, ale nie błędów. PHP ma stałe, które mają to robić, ale wydają się nie działać. Oto, co POWINNO działać, ale nie działa, ponieważ (błąd?) ....
http://php.net/manual/en/libxml.constants.php
źródło
To zadziałało dla mnie:
Jeśli potrzebujesz tagu nagłówka, zmień nagłówek za pomocą znacznika div i użyj identyfikatora. Na przykład:
Nie jest to najlepsze rozwiązanie, ale w zależności od sytuacji może się przydać.
Powodzenia.
źródło
Tagi HTML5 prawie zawsze używają atrybutów, takich jak identyfikator, klasa i tak dalej. Zatem kod do wymiany będzie wyglądał następująco:
źródło