Php HTML DOM解析器

Php HTML DOM解析器,php,html,parsing,dom,Php,Html,Parsing,Dom,我正在使用HTMLDOM解析器 我有这样的html代码,想用blue类解析第一个UL中的所有LI <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"&g

我正在使用HTMLDOM解析器

我有这样的html代码,想用blue类解析第一个UL中的所有LI

<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>
此代码返回

<li>1</li><li>2</li><li>3</li><li>4</li><li>5</li>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 但是我想要

    <li>1</li><li>2</li><li>3</li>
    
  • 1
  • 2
  • 3
  • 如果有人知道如何解决我的问题,我会很高兴的

    你能做到

     <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>
    

    您只需要第一个
    ul
    所有
    li
    元素。您可以按如下方式进行操作:-

    $res = "";
    foreach($html->find('.blue->li',0) as $element) 
    {
        $res = $res . $element;
    }
    echo $res;
    
    输出:-
  • 1
  • 2
  • 3
  • foreach($html->find('ul', 0) as $ul) 
    {
           foreach($ul->find('li') as $li) 
           {
                 $ret = $li->find('.blue');
           }
    }
    echo $ret
    

    这将为您提供蓝色类的第一个ul的所有li。

    不需要两个
    foreach()
    检查其他答案,您将得到一个更简单的解决方案在您对答案进行编辑后是有意义的。@hivokas很高兴帮助您再次检查,现在它返回1LIARRAYARRAY
    • 1
    • 2
    • 3
      • 阵列73
        $res = "";
        foreach($html->find('.blue->li',0) as $element) 
        {
            $res = $res . $element;
        }
        echo $res;
        
        foreach($html->find('ul', 0) as $ul) 
        {
               foreach($ul->find('li') as $li) 
               {
                     $ret = $li->find('.blue');
               }
        }
        echo $ret