1

単純な 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>

ul.products-grid の各 li と a を繰り返し処理したいのですが、このコードをまだ使用した次の 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;
    }
}

何か考えがある人は、それを整理するのを手伝ってください。ありがとう

4

2 に答える 2

4

あなたはそれを過度に複雑にしています:

foreach ( $html->find('div.category-products li a') as $a){
  // do something with $a
}
于 2013-04-22T23:27:01.567 に答える