基本上我试图让它刮掉海报图片的网址,但由于某种原因它没有。正则表达式在regex101中正常工作,但在实际页面本身上没有。
我的代码:
<?php
$url="http://www.imdb.com/title/tt0121955/";
$ch2 = curl_init();
curl_setopt ($ch2, CURLOPT_URL, $url);
curl_setopt ($ch2, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch2, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31");
curl_setopt ($ch2, CURLOPT_TIMEOUT, 60);
curl_setopt ($ch2, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt ($ch2, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch2, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch2, CURLOPT_REFERER, $url);
$result = curl_exec ($ch2);
curl_close($ch2);
if(preg_match_all('/<td rowspan="2" id="img_primary"><div class="image"><a href="(.*)"><img alt="(.*)" title="South Park \(1997\) Poster" src="(.*)" itemprop="image" height="(.*)" width="(.*)"><\/a><\/div>/', $result, $matches) !== false) {
foreach($matches as $match) {
echo $match[0];
echo $match[1];
echo $match[2];
echo $match[3];
}
}
?>
我也在$ match上做了var_dump并输出:
array(6) { [0]=> array(0) { } [1]=> array(0) { } [2]=> array(0) { } [3]=> array(0) { } [4]=> array(0) { } [5]=> array(0) { } }
所以它似乎没有找到任何东西,但奇怪的是它在regex101
上工作正常答案 0 :(得分:0)
页面上的HTML与您的正则表达式不匹配。如果您不需要该信息,请不要尝试使用正则表达式捕获它。尝试
preg_match_all('/title="South Park \(1997\) Poster"\s*src="([^"]+)"/m',
$result,
$matches);
var_dump($matches);
你已经完成了。恕我直言,刮取页面的最佳方法是使用perl。