2017-03-08 149 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

当你对你的答案进行编辑后,你的意思是有道理的。 –