Я пытался разобрать HTML5-код, чтобы установить атрибуты / значения в коде, но, похоже, DOMDocument (PHP5.3) не поддерживает такие теги, как <nav>
и<section>
.
Есть ли способ разобрать это как HTML в PHP и манипулировать кодом?
Код для воспроизведения:
<?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>");
ошибка
Предупреждение: DOMDocument :: loadHTML (): тег nav недействителен в Entity, строка: 4 в /home/wbkrnl/public_html/new-mvc/1.php в строке 17
Предупреждение: DOMDocument :: loadHTML (): раздел тега недопустим в Entity, строка: 10 в /home/wbkrnl/public_html/new-mvc/1.php в строке 17
php
html
domdocument
Клаас Сэнджерс
источник
источник
loadHTML($HTML5)
возвращается FALSE (сбой)! Мне нужно заменить новые теги на DIV ... Проблема не только в "предупреждениях" на моем экране.Ответы:
Нет, невозможно указать конкретный тип документа для использования или изменить требования к существующему.
Лучшее работоспособное решение - отключить отчеты об ошибках с помощью
libxml_use_internal_errors
:источник
loadHTML($HTML5)
возвращается FALSE (сбой)! Мне нужно изменить новые теги на DIV ...loadHTML
теперь фактически принимает теги HTML5.Вы также можете сделать
источник
@
либоlibxml_*
)Вы можете фильтровать ошибки, которые вы получаете от парсера. В соответствии с другими ответами здесь отключите отображение ошибок на экране, а затем перебирайте ошибки и показывайте только те, которые вы хотите:
Вот одна
print_r()
из ошибок:Путем сопоставления на
message
и / илиcode
их можно довольно легко отфильтровать.источник
Кажется, нет способа убрать предупреждения, но не ошибки. В PHP есть константы, которые должны делать это, но, похоже, они не работают. Вот что ДОЛЖНО работать, но не работает, потому что (ошибка?) ....
http://php.net/manual/en/libxml.constants.php
источник
Это сработало для меня:
Если вам нужен тег заголовка, измените заголовок с помощью тега div и используйте идентификатор. Например:
Это не лучшее решение, но в зависимости от ситуации может быть полезно.
Удачи.
источник
Теги HTML5 почти всегда используют такие атрибуты, как id, class и т. Д. Итак, код для замены будет:
источник