web-dev-qa-db-fra.com

PHP Analyser le code HTML

Duplicata possible:
Meilleures méthodes pour analyser HTML

Comment puis-je analyser le code HTML contenu dans une variable PHP si elle ressemble à:

<h1>T1</h1>Lorem ipsum.<h1>T2</h1>The quick red fox...<h1>T3</h1>... jumps over the lazy brown FROG!

Je veux obtenir uniquement le texte qui se trouve entre les en-têtes et je comprends que ce n'est pas une bonne idée d'utiliser des expressions régulières.

44
Francisc

Utilisez PHP modèle d'objet de document :

<?php
   $str = '<h1>T1</h1>Lorem ipsum.<h1>T2</h1>The quick red fox...<h1>T3</h1>... jumps over the lazy brown FROG';
   $DOM = new DOMDocument;
   $DOM->loadHTML($str);

   //get all H1
   $items = $DOM->getElementsByTagName('h1');

   //display all H1 text
   for ($i = 0; $i < $items->length; $i++)
        echo $items->item($i)->nodeValue . "<br/>";
?>

Cela génère:

 T1
 T2
 T3

[EDIT]: Après clarification OP:

Si vous voulez le contenu comme Lorem ipsum. etc, vous pouvez directement utiliser cette expression régulière:

<?php
   $str = '<h1>T1</h1>Lorem ipsum.<h1>T2</h1>The quick red fox...<h1>T3</h1>... jumps over the lazy brown FROG';
   echo preg_replace("#<h1.*?>.*?</h1>#", "", $str);
?>

cela produit:

Lorem ipsum. Le renard roux rapide ... saute par dessus la grenouille brune paresseuse

107
shamittomar