HTML DOM Parser

时间:2017-03-08 15:49:14

标签: php html parsing dom

我正在使用html dom解析器

我有像这样的HTML代码,并希望解析所有LI的第一个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>
如果有人知道如何解决我的问题,我会很高兴

3 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

您只需要ulli个元素。你可以这样做: -

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

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

答案 2 :(得分:0)

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

这应该给你第一个ul的所有li和蓝色类。