1

simple_html_dom を使用して Web サイトから情報を抽出しようとしています。

現在私は使用しています:

foreach ($html->find('div.product') as $results) {
    foreach ($results->find('div.image') as $img) {
        echo $img;
    }
    foreach ($results->find('a.title') as $title) {
        echo $title->plaintext;
    }
    foreach ($results->find('div.price') as $price) {
        echo $price;
    }
}

これはうまくいきます。ただし、foreach ループの外で各変数をエコーできるようにする必要があります。上記のコードを使用してこれを行うと、最終結果のみが表示されます。つまり、抽出しようとしている 10 個の製品のうち、10 番目のみが表示されます。

配列を使用して各 foreach ループからのすべての結果を格納し、ループ全体が終了したらそれらをエコーアウトする方法はありますか?

このようなもの:

foreach ($html->find('div.product') as $results) {
    foreach ($results->find('div.image') as $img) {
        array($img);
    }
    foreach ($results->find('a.title') as $title) {
        array($title->plaintext);
    }
    foreach ($results->find('div.price') as $price) {
        array($price);
    }
}
echo array($img);
echo array($title);
echo array($price);

この質問がわかりにくかったら申し訳ありません。私は PHP、特に配列についてよく理解していません。

4

4 に答える 4

3
$array_img = array();
$array_title = array();
$array_price = array();
foreach ($html->find('div.product') as $results) {
    foreach ($results->find('div.image') as $img) {
        $array_img[] = $img;
    }
    foreach ($results->find('a.title') as $title) {
        $array_title[]= $title->plaintext;
    }
    foreach ($results->find('div.price') as $price) {
        $array_price[]= $price;
    }
}
echo '<pre>';
print_r($array_img);
print_r($array_title);
print_r($array_price);
echo '</pre>';
于 2012-01-31T14:27:12.703 に答える
1
$images = array();
foreach ($html->find('div.product') as $results) {
    foreach ($results->find('div.image') as $img) {
        $images[] = $img; // append $img to the $images array
    }
}

var_dump($images);

タイトルと価格のデータについても同じようにします。

于 2012-01-31T14:25:18.960 に答える
1
$img = array();
$title = array();
$price = array();
foreach ($html->find('div.product') as $results) {
    $img[] = $results->find('div.image');
    $title[] = $results->find('a.title');
    $price[] = $results->find('div.price');
}

print_r($img);
print_r($title);
print_r($price);
于 2012-01-31T14:29:04.570 に答える
0

あなたの質問を完全に理解できるかどうかわからない場合は、次のことを試してください。

$priceList = $titleList = $imgList = array();

foreach ($html->find('div.product') as $results) {<br/>
    foreach ($results->find('div.image') as $img) {<br/>
        $imgList[] = $img;<br/>
    }<br/>
    foreach ($results->find('a.title') as $title) {<br/>
        titleList[] = $title;<br/>
    }<br/>
    foreach ($results->find('div.price') as $price) {<br/>
        priceList[] = $price;<br/>
    }<br/>
}<br/>
foreach ($imgList as $img) {<br/>
        echo $img;<br/>
}<br/>

等々...

于 2012-01-31T14:34:35.723 に答える