2010-08-20 39 views
1

夥計們,我需要一些幫助!我有一個完全呈現菜單(一個安全的HTML輸出)...和我需要的<li>只是其第一級數... 例如:計數呈現菜單的項目 - 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> 

所以結果應該是5個項目...

注意:在這一刻,第一級不被<ul>包裹......所以這可能有助於正則表達式......我相信它也可以使用XPath查詢來完成......但:(

如果可能我想了解2種方法...... D

謝謝!!!

回答

1

比方說,你是一個<div>標籤內計數主要li的:

你會嘗試這樣的:

$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); 

會打印:

5 
+0

也'計數(/ div/li)'是一個有效的XPath表達式,其值爲'5'。 – 2010-08-20 12:32:38

+0

yeap!非常感謝你老兄! :D 現在...您對XPath查詢的性能有任何想法嗎?在構建正則表達式之前,我是否應該先列出清單? thx再次! – Wil 2010-08-20 20:02:38