Pergunta

Estou procurando bons métodos de manipulação de HTML em PHP.Por exemplo, o problema que tenho atualmente é lidar com HTML malformado.

Estou recebendo informações parecidas com estas:

<div>This is some <b>text

Como você notou, faltam tags de fechamento no HTML.Eu poderia usar regex ou um analisador XML para resolver esse problema.No entanto, é provável que eu tenha que fazer outras manipulações no DOM no futuro.Gostaria de saber se existem boas bibliotecas PHP que lidam com a manipulação do DOM de maneira semelhante à forma como o Javascript lida com a manipulação do DOM.

Foi útil?

Solução

PHP tem uma extensão PECL que dá acesso aos recursos do HTML Tidy.Tidy é uma biblioteca bastante poderosa que deve ser capaz de pegar códigos como esse e fechar tags de maneira inteligente.

Eu o uso para limpar XML e HTML malformados enviados a mim por um sistema de anúncios classificados antes da importação.

Outras dicas

Eu descobri que o PHP Simple HTML DOM é a biblioteca mais útil e direta até agora.Melhor que PECL, eu diria.

Eu escrevi um artigo sobre como usá-lo para obter datas de turnês de artistas no myspace (apenas um exemplo.) Aqui está um link para o analisador dom html simples php.

A biblioteca DOM que agora está integrada pode resolver esse problema facilmente.O método loadHTML aceitará XML malformado, enquanto o método load não.

$d = new DOMDocument;
$d->loadHTML('<div>This is some <b>text');
$d->saveHTML();

A saída será:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
  <body>
    <div>This is some <b>text</b></div>
  </body>
</html>

Para manipular o DOM, acho que o que você está procurando é esse.Eu costumava analisar documentos HTML da web e funcionou bem para mim.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top