Tenho tentado analisar o código HTML5 para definir atributos / valores dentro do código, mas parece que DOMDocument (PHP5.3) não oferece suporte a tags como <nav>
e <section>
.
Existe alguma maneira de analisar isso como HTML em PHP e manipular o código?
Código para reproduzir:
<?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>");
Erro
Aviso: DOMDocument :: loadHTML (): Tag nav inválida em Entity, linha: 4 em /home/wbkrnl/public_html/new-mvc/1.php na linha 17
Aviso: DOMDocument :: loadHTML (): seção de tag inválida em Entity, linha: 10 em /home/wbkrnl/public_html/new-mvc/1.php na linha 17
php
html
domdocument
Klaas Sangers
fonte
fonte
loadHTML($HTML5)
retorna FALSE (falha)! Preciso trocar as novas tags por DIVs ... Não é apenas um problema de "avisos" na minha tela.Respostas:
Não, não há como especificar um doctype específico a ser usado ou modificar os requisitos do existente.
Sua melhor solução viável será desativar o relatório de erros com
libxml_use_internal_errors
:fonte
loadHTML($HTML5)
retorna FALSE (falha)! Preciso mudar as novas tags para DIVs ...loadHTML
agora aceita tags HTML5.Você também poderia fazer
fonte
@
oulibxml_*
)Você pode filtrar os erros obtidos no analisador. De acordo com outras respostas aqui, desative o relatório de erros na tela e, em seguida, repita os erros e mostre apenas aqueles que você deseja:
Aqui está um
print_r()
erro único:Combinando no
message
e / ou nocode
, eles podem ser filtrados facilmente.fonte
Não parece haver uma maneira de eliminar os avisos, mas não os erros. O PHP tem constantes que supostamente fazem isso, mas elas parecem não funcionar. Aqui está o que DEVE funcionar, mas não funciona porque (bug?) ....
http://php.net/manual/en/libxml.constants.php
fonte
Isso funcionou para mim:
Se você precisar da tag de cabeçalho, altere o cabeçalho com uma tag div e use um id. Por exemplo:
Não é a melhor solução, mas dependendo da situação pode ser útil.
Boa sorte.
fonte
As tags HTML5 quase sempre usam atributos como id, classe e assim por diante. Portanto, o código de substituição será:
fonte