いくつかの 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() 関数を呼び出します。
もう 1 つの質問は、array_filter 関数を使用してクラス「b-offers」を 1 つだけ持つ要素を取得するコードを書き直すことは可能ですか? 次のようないくつかの異なるアプローチを試したことを覚えています
$html->find('div[class="b-offers"]')
または一種の、しかしそれは私にとってはうまくいきませんでした