2009-12-19 12 views
0

Je l'ai déjà fait mais je ne trouve pas mon extrait de code. Je voudrais analyser un fichier html et tirer tout dans mon navigateur qui se trouve entre quelques balises span. Il y a d'autres balises span dans le html que je ne veux pas, donc je me suis dit que je limiterais l'analyse à seulement les balises span qui ont la même classe css. Quelqu'un peut-il s'il vous plaît me donner un exemple de la façon de faire cela? Merci.PHP dom - Comment obtenir le contenu d'une balise span contenant un lien hypertexte

$tags = $doc->getElementsByTagName('span'); 

Ceci est une seule ligne du html j'essaie d'analyser

<span class='close'><a href="bla.com/test.htm">test row</a></span> 

Répondre

0

Première tentative (non testé):

$elts = $doc->getElementsByTagName('span'); 
foreach ($elts as $elt) 
    { 
    $className = $elt->getAttribute('class'); 
    if (array_search('close', explode(' ', $className))) 
     { 
     // Do things with $elt since it matches. 
     } 
    } 
+0

Salut Dustin, merci pour votre aide. Je suis presque certain qu'il existe un moyen d'ajouter le nom de la classe CSS au "getElementsByTagName" sans avoir à utiliser regex. Si je ne peux pas obtenir cette syntaxe de quelqu'un ici, je vais certainement utiliser votre suggestion – John

+0

Réponse originale éditée. Cela fait un moment que j'ai utilisé PHP. – Dustin

+0

Mon pote, merci. Ça marche. J'ai modifié votre code pour utiliser in_array() au lieu de array_search car j'ai un tableau associatif et array_search ne fonctionnerait pas. A part ça, ça marche super bien. – John

0

À mon avis et l'expérience peut être fait par getElementsByTagName() ?? Utilisez simplement une fonction ajax-y pour l'appeler et vous avez votre élément DOM :)

+0

Hey Ben, je veux finalement utiliser ce script pour fonctionner comme un travail cron si AJAX ne fonctionnera pas, car AJAX ne fonctionne que dans le navigateur. En ce moment, j'utilise le navigateur pour le tester. – John

Questions connexes