私はphpが初めてで、preg_match_allを使用してURLからデータを抽出しようとしています
問題は、一致が文字列に変換され、それらを個別に抽出できないことです
<?php
$pattern = '/<span class="product".*/i';
$string = file_get_contents('http://www.example.com/');
preg_match_all($pattern, $string, $matches);
echo '<b>preg_match_all()</b>';
echo '<pre>';
echo '<br /><b>Products:</b> ', var_dump($matches);
echo '</pre>';
戻り値
preg_match_all()
Products: array(1) {
[0]=> array(7) {
[0] => string(46) "Product 1"
[1] => string(42) "Product 2"
[2] => string(46) "Product 3"
[3] => string(41) "Product 4"
[4] => string(58) "Product 5"
[5] => string(42) "Product 6"
[6] => string(37) "Product 7"
}
}
一度に 1 つの項目 (要素を分離) を抽出し、可能であればそれぞれを独自の変数に配置しようとしています。例: $product1 = "製品 1"
echo $matches[2];
製品 3 を取得しようとすると、未定義のオフセット エラーが発生します
編集:
このスレッドの助けを借りて:特定のスパン クラスに含まれるデータを取得する
解決:
<?php
$html=file_get_contents('http://www.example.com/');
preg_match_all("/\<span class\=\"products\"\>(.*?)\<\/span\>/",$html,$b);
foreach($b as $key => $value) {
$$key = $value;
}
echo $value[4]; // Returns 4th key, or "Product 5"
はい、コードのフォーマットが苦手です