简体   繁体   English

PHP:Simple DOM Parser如何迭代这个html

[英]PHP : Simple DOM Parser how to iterate this html

I trying to iterate over this following html using simple html dom parser but not getting to next node. 我试图使用简单的html dom解析器迭代这个跟随html,但没有到达下一个节点。

<div class="category-products">
<ul class="products-grid">
    <li><a href="http://someurl.com">Text</a></li>
    <li><a href="http://someurl.com">Text</a></li>
    <li><a href="http://someurl.com">Text</a></li>
</ul>
<ul class="products-grid">
    <li><a href="http://someurl.com">Text</a></li>
    <li><a href="http://someurl.com">Text</a></li>
    <li><a href="http://someurl.com">Text</a></li>
</ul>
<ul class="products-grid">
    <li><a href="http://someurl.com">Text</a></li>
    <li><a href="http://someurl.com">Text</a></li>
    <li><a href="http://someurl.com">Text</a></li>
</ul>
</div>

I want to iterate over each li and a for ul.products-grid but i am not getting to next ul tag I have used this code yet. 我想迭代每个li和一个ul.products-grid但我没有到达下一个ul标签我已经使用了这个代码。

require_once('simple_html_dom.php');
set_time_limit(0);
ini_set('memory_limit', '1024M');
$url='http://www.somesite.com';
$html = file_get_html($url);

if(is_object($html)){
    foreach ( $html->find('div.category-products') as $elem){
        $data = $elem->innertext;
        $strdata = str_get_html($data);
        foreach ($strdata->find('ul[class="products-grid"]') as $ul) {
                //not getting how to iterate over next ul tags
        }
        die;
    }
}

Any body having any idea please help to sort it out. 任何有任何想法的机构请帮忙解决。 Thanks 谢谢

You're overcomplicating it: 你过度复杂了:

foreach ( $html->find('div.category-products li a') as $a){
  // do something with $a
}

You may try this 你可以试试这个

$url='http://www.somesite.com';
$html = file_get_html($url);
if(is_object($html)){
    foreach ( $html->find('div.category-products .products-grid') as $ul){
        // To iterate al li tags use following
        foreach ( $ul->find('li') as $li )  echo $li. '<br />';
        // To iterate al a tags use following
        foreach ( $ul->find('li a') as $a ) echo $a. '<br />';
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM