"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso preservar tags HTML ao extrair nós usando o DOMDocument do PHP?

Como posso preservar tags HTML ao extrair nós usando o DOMDocument do PHP?

Publicado em 2024-12-22
Navegar:421

How Can I Preserve HTML Tags When Extracting Nodes Using PHP's DOMDocument?

Problemas com a extração de nós HTML usando DOMDocument

Introdução

DOMDocument, uma classe PHP, oferece uma abordagem conveniente para análise e manipulação de documentos HTML. No entanto, ao tentar reter tags HTML durante a extração de conteúdo, os usuários podem encontrar dificuldades. Este artigo investiga o conceito subjacente de DOM e propõe soluções para enfrentar esse desafio.

Compreendendo DOM e nós

DOMDocument representa documentos HTML como árvores hierárquicas de nós. Cada nó pode ter nós filhos, formando uma estrutura complexa. É crucial reconhecer que os elementos HTML, juntamente com seus atributos e conteúdo de texto, são todos representados como nós dentro de um DOMDocument.

Resolvendo o problema de preservação de tags

O fornecido o código busca com êxito o nó DIV com o ID "showContent". No entanto, ele recupera apenas o conteúdo do texto dentro do DIV, excluindo as próprias tags HTML. Isso ocorre porque o código usa $tag->nodeValue, que extrai apenas o texto em vez dos nós reais.

Solução: atravessando nós

Para preservar os nós HTML, você precisa percorrer os nós filhos do seu nó de destino. O código abaixo mostra esta abordagem:

$dom = new DOMDocument();
@$dom->loadHTML($html);

$xpath = new DOMXPath($dom);

$tags = $xpath->query('.//div[@id="showContent"]');
foreach ($tags as $tag) {
    echo $dom->saveXML($tag);
    echo '
'; }

Recuperando informações específicas do HTML

Se precisar de informações específicas do documento HTML, como links da tabela, você pode modificar a consulta XPath para selecionar o nós apropriados. Por exemplo:

foreach ($div->getElementsByTagName('a') as $link) {
    echo $dom->saveXML($link);
}

Recursos adicionais

Para obter mais assistência sobre como trabalhar com DOMDocument, consulte os seguintes recursos:

  • [Documentação do DOMDocument](https ://www.php.net/manual/en/class.domdocument.php)
  • [Perguntas e respostas sobre DOMDocument na pilha Estouro](https://stackoverflow.com/search?q=user:208809 DOM)
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3