Como analisar HTML em PHP?

Eu sei que podemos usar o PHP DOM para analisar o HTML usando o PHP. Eu também encontrei muitas questões aqui no stackoverflow. Mas eu tenho um requisito específico. Eu tenho um conteúdo HTML como abaixo

Chapter 1

This is chapter 1

Chapter 2

This is chapter 2

Chapter 3

This is chapter 3

Eu quero analisar o HTML acima e salvar o conente em duas matrizes diferentes, como

$heading e $content

 $heading = array('Chapter 1','Chapter 2','Chapter 3'); $content = array('This is chapter 1','This is chapter 2','This is chapter 3'); 

Eu posso conseguir isso simplesmente usando jQuery. Mas não tenho certeza, é o caminho certo. Seria ótimo se alguns pudessem me apontar para a direção certa. Desde já, obrigado.

Tente olhar para PHP Simple HTML DOM Parser

Tem uma syntax shiny semelhante ao jQuery para que você possa facilmente selecionar qualquer elemento que você deseja por ID ou class

Utilizei domdocument e domxpath para obter a solução, você pode encontrá-lo em:

  Chapter 1 

This is chapter 1

Chapter 2

This is chapter 2

Chapter 3

This is chapter 3

'; $dom->loadHTML($test); $xpath = new DOMXpath($dom); $heading=parseToArray($xpath,'Heading1-H'); $content=parseToArray($xpath,'Normal-H'); var_dump($heading); echo "
"; var_dump($content); echo "
"; function parseToArray($xpath,$class) { $xpathquery="//span[@class='".$class."']"; $elements = $xpath->query($xpathquery); if (!is_null($elements)) { $resultarray=array(); foreach ($elements as $element) { $nodes = $element->childNodes; foreach ($nodes as $node) { $resultarray[] = $node->nodeValue; } } return $resultarray; } }

Resultado ao vivo: http://saji89.codepad.org/2TyOAibZ

Uma opção para você é usar DOMDocument e DOMXPath. O que exige um pouco de uma curva para aprender, mas uma vez que você faz, você ficará muito feliz com o que você pode conseguir.

Leia o seguinte em php.net

http://php.net/manual/en/class.domdocument.php

http://php.net/manual/en/class.domxpath.php

Espero que isto ajude.

// Crie DOM a partir de URL ou arquivo

 $html = file_get_html('http://www.google.com/'); 

// Encontre todas as imagens

 foreach($html->find('img') as $element) echo $element->src . '
';

// Encontre todos os links

 foreach($html->find('a') as $element) echo $element->href . '
';