2015-04-06 61 views
0

IM期運用「PHP簡單的HTML DOM解析器」這個HTML:PHP簡單的HTML DOM解析器:只得到父母

<ul id="menu-test-header" class="nav-menu"> 
    <li> 
     <a href="">Test</a> 
     <ul class="sub-menu"> 
      <li> 
       <a href="">sub test</a> 
       <a href="">sub test</a> 
       <a href="">sub test</a> 
      </li> 
     </ul> 
    </li> 
    <li> 
     <a href="">Test</a> 
    </li> 
    <li> 
     <a href="">Test</a> 
     <ul class="sub-menu"> 
      <li> 
       <a href="">sub test</a> 
      </li> 
     </ul> 
    </li> 
</ul> 

我想結果只有父「李一月底拿到「沒有」子菜單「部分。 其意思是,最終的結果應該只是「測試」而不是「子測試」。 應該選擇什麼?

PHP代碼:

foreach($html->find(".header-main .nav-menu li > a") as $menu) { 
    echo $menu->plaintext; 
} 

謝謝大家,爲我的英語不好對不起:-)

+0

謝謝你,但是這不是我 – roev

+1

它存在的作品,也許問題是「PHP簡單的HTML DOM解析器」不支持>選擇器? – roev

+0

啊,你是對的!幽靈的答案的第二部分絕對是要走的路。 – Joe

回答

2

作爲替代方案,你可以指出從主<ul>第一第一<li>孩子,從那裏,將每個目標<a>定爲->children(0)

foreach($html->find('ul#menu-test-header', 0)->children() as $li) { 
    echo $li->children(0); 
} 

旁註:但是我真的建議DOMDocument + DOMXpathsimple-html-dom

$dom = new DOMDocument; 
$dom->loadHTML($html_string); 
$xpath = new DOMXpath($dom); 
$first_list_links = $xpath->evaluate('//ul[@id="menu-test-header"]/li/a'); 
foreach($first_list_links as $links) { 
    echo $dom->saveHTML($links); 
} 

Sample Output

+0

一個好主意!但是,這個html有時可能會略有不同。所以我有點害怕使用這個解決方案。 – roev