2017-03-08 146 views
-1

我使用的HTML DOM解析器HTML DOM解析器

我有這樣的HTML代碼,並且希望解析所有李時珍從第一UL帶班藍色

<html> 
<div id="rhy"> 
<h2 class="text">Text1</h2> 
<ul class="blue"> 
<li>1</li> 
<li>2</li> 
<li>3</li> 
</ul> 
<h2 class="text">Text2</h2> 
<ul class="blue"> 
<li>4</li> 
<li class="z">5</li> 
<li>6</li> 
</ul> 
</div> 
</html> 

和我有PHP代碼

$res = ""; 
foreach($html->find('#rhy -> .blue -> li[!class]') as $element) 
{ 
    $res = $res . $element; 
} 
echo $res; 

此代碼返回

<li>1</li><li>2</li><li>3</li><li>4</li><li>5</li> 

但我想有

<li>1</li><li>2</li><li>3</li> 

我會很高興,如果有人知道如何解決我的問題

回答

0

您只需要首先ul全部li元素。你可以像下面: -

$res = ""; 
foreach($html->find('.blue->li',0) as $element) 
{ 
    $res = $res . $element; 
} 
echo $res; 

輸出: - <li>1</li><li>2</li><li>3</li>

+0

謝謝你!它的作品 – hivokas

+0

@hivokas很高興幫助你 –

+0

標記,謝謝! – hivokas

0

那麼你可以做到這一點

<html> 
<div id="rhy"> 
<h2 class="text">Text1</h2> 
<ul id ="yourid" class="blue"> 
<li>1</li> 
<li>2</li> 
<li>3</li> 
</ul> 
<h2 class="text">Text2</h2> 
<ul class="blue"> 
<li>4</li> 
<li class="z">5</li> 
<li>6</li> 
</ul> 
</div> 
</html> 

而且你的PHP

$res = ""; 
foreach($html->find('#rhy -> #yourid -> li[!class]') as $element) 
{ 
    $res = $res . $element; 
} 
echo $res; 
+0

這個html代碼不是在我的網站上,所以我不能編輯這個 – hivokas

0
foreach($html->find('ul', 0) as $ul) 
{ 
     foreach($ul->find('li') as $li) 
     { 
      $ret = $li->find('.blue'); 
     } 
} 
echo $ret 

這應該給你的類藍色第一UL的所有華里。

+0

不需要的兩個'的foreach()'檢查其他的答案,你會得到一個更簡單的解決方案 –

+0

當你對你的答案進行編輯後,你的意思是有道理的。 –