特定の Web ページのマークアップから画像をスクレイピングしようとしています。これらの Web ページにはすべてスライドショーがあります。それらのソースは、ページ上の JavaScript オブジェクトに含まれています。get_file_contents("http://www.example.com/page/1"); が必要だと思っています。次に、フレーズを入力できる preg_match_all() 関数を用意し (つまり、"\"LargeUrl\":\""、または "\"Description\":\"")、ヒットするまで文字列を取得します。次に見つかった引用符。
var photos = {};
photos['photo-391094'] = {"LargeUrl": "http://www.example.org/images/1.png","Description":"blah blah balh"};
photos['photo-391095'] = {"LargeUrl": "http://www.example.org/images/2.png","Description":"blah blah balh"};
photos['photo-391096'] = {"LargeUrl": "http://www.example.org/images/3.png","Description":"blah blah balh"};
私はこの関数を持っていますが、入力フレーズの後に行全体を返します。入力フレーズの後から次の引用符に到達するまで検索するように変更するにはどうすればよいですか? それとも、私はこれをすべて間違っていて、より良い方法がありますか?
$page = file_get_contents("http://www.example.org/page/1");
$word = "\"LargeUrl\":\"";
if(preg_match_all("/(?<=$word)\S+/i", $page, $matches))
{
echo "<pre>";
print_r($matches);
echo "</pre>";
}
理想的には、「\"LargeUrl\":\"」を入力した場合、関数は次のような配列を返します
$matches[0] = "http://www.example.org/images/1.png";
$matches[1] = "http://www.example.org/images/2.png";
$matches[2] = "http://www.example.org/images/3.png";