Comment puis-je trouver des noeuds de texte dans un fragment de code HTML?

StackOverflow https://stackoverflow.com/questions/4782152

  •  23-10-2019
  •  | 
  •  

Question

Je suis en train d'analyser un fragment de code HTML, en utilisant les fonctions DOM PHP. J'ai dépouillé tout sauf paragraphe, les balises span et saut de ligne, et maintenant je veux récupérer tout le texte, ainsi que ses styles d'accompagnement.

Alors, je voudrais obtenir chaque morceau de texte, un par un, et pour chacun d'eux, je peux ensuite remonter l'arbre pour obtenir les valeurs des attributs particuliers (je suis seulement intéressé à certains de ceux spécifiques, comme la couleur, etc.).

Comment puis-je faire cela? Ou suis-je pense à la mauvaise façon?

Merci!

Pas de solution correcte

Autres conseils

Supposons que vous ayez un DOMDocument ici:

$doc = new DOMDocument();
$doc->loadHTMLFile('http://stackoverflow.com/');

Vous pouvez trouver tous les nœuds de texte à l'aide d'un simple Xpath.

$xpath = new DOMXpath($doc);
$textNodes = $xpath->query('//text()');

Juste foreach dessus itérer sur tous les nœuds texte:

foreach ($textNodes as $textNode) {
    echo $textNode->data . "\n";
}

De là, vous pouvez remonter dans l'arborescence DOM en utilisant ->parentNode.

L'espoir que cela peut vous donner un bon départ.

Pour ceux qui sont plus à l'aise avec les sélecteurs CSS3, et sont prêts à inclure une seule classe PHP supplémentaire dans leur projet, je suggère l'utilisation de simple analyseur PHP DOM . La solution ressemblerait à quelque chose comme ce qui suit:

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

$ret = $html->find('p, span');    
$store = array();

foreach($ret as $element) {
    $store[] = array($element->tag => array('text' => $element->innertext, 
                                            'color' => $element->color, 
                                            'style' => $element->style));
}
print_r($store);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top