繁体   English   中英

Simplehtmldom获取第一个元素

[英]Simplehtmldom get first element

当我解析一些html并获取html元素数组时,我想获取第一项。 这是代码:

    $url  = getLink($good);
    $html = file_get_html($url);

    $offers = array_filter($html->find('div.b-offers'), function($node) {
        return $node->class == 'b-offers'; // If this only class is set
    });

    // $offer    = $offers[0];  // <---- look here
    foreach ($offers as $offer) {
        $price    = $offer->find('span.b-prices__num', 0)->innertext();
        break;
    }

仅当我立即使用foreach和break时,它才有效。 但是,为什么$ offer = $ offers [0]不起作用? 如果我这样写,这里将出现错误:

$price = $offer->find('span.b-prices__num', 0)->innertext();

就像在非对象上调用find()函数一样。

另外一个问题是:在使用array_filter函数获取只有一个“ b-offers”类的元素时,是否可以重写代码? 我记得我尝试了一些不同的方法,例如

$html->find('div[class="b-offers"]')

或某种类型,但对我不起作用

$offer = $offers[0]; 不起作用,因为array_filter不会返回基于0索引的数组。 它保留了先前数组的键。

为什么$ offer = $ offers [0]不起作用? 我认为因为此时$offers仍然是一个对象而不是数组

要获得只有一个类“ b-offers”的元素,请尝试$html->find('div.b-offers');

暂无
暂无

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

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