2010-08-20 5 views
1

Les gars, j'ai besoin d'aide! J'ai un menu entièrement rendu (une sortie html sûr) ... et j'ai besoin le nombre de <li> seulement de son premier niveau ... exemple:Comptage des éléments d'un menu rendu - PHP/Regex/XPath

<li><a>first</a></li> 
<li><a>first</a></li> 
<li> 
    <a>first</a> 
    <ul> 
    <li><a>second</a></li> 
    <li> 
     <a>second</a> 
     <ul> 
     <li><a>third</a></li> 
     </ul> 
    </li> 
    </ul> 
</li> 
<li><a>first</a></li> 
<li> 
    <a>first</a> 
    <ul> 
    <li><a>second</a></li> 
    <li><a>second</a></li> 
    </ul> 
</li> 

Ainsi, le résultat devrait être 5 articles ...

note: en ce moment, le premier niveau n'est pas encore encapsulé par un <ul> ... donc cela pourrait aider une regex ... Je crois que cela peut être fait en utilisant une requête XPath aussi ... mais :(Si possible, je voudrais comprendre les 2 approches ...: D

merci !!!

Répondre

1

Disons que vous comptez s primaires li de » dans une balise <div>:

vous allez essayer ceci:

$string = "<div><li><a>first</a></li><li><a>first</a></li><li><a>first</a><ul><li><a>second</a></li><li><a>second</a><ul><li><a>third</a></li></ul></li></ul></li><li><a>first</a></li><li><a>first</a><ul><li><a>second</a></li><li><a>second</a></li></ul></li></div>"; 

$xml = new SimpleXMLElement($string); 

/* Search for <div><li> */ 
$result = $xml->xpath('/div/li'); 
echo count($result); 

imprimera:

5 
+0

compte aussi' (/ div/li) 'est une expression XPath valide qui est évaluée à' 5'. –

+0

ouais! merci beaucoup mec! : D maintenant ... avez-vous une idée des performances d'une requête XPath? devrais-je mettre au début sur ma liste avant de construire une regex? encore une fois! – Wil

Questions connexes