我的代码在这里;
$curl = curl_init($link);
$userAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.A.B.C Safari/525.13";
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT ,0);
curl_setopt($curl, CURLOPT_USERAGENT, $userAgent);
curl_setopt($curl, CURLOPT_TIMEOUT, 400);
ini_set('max_execution_time', 300);
$page = curl_exec($curl);
if(curl_errno($curl)) // check for execution errors
{
echo 'Scraper error: ' . curl_error($curl);
exit;
}
$html= curl_close($curl);
$dom = new DOMDocument();
@$dom->loadHTML($html);
$regex = '/<div id="urunid">(.*?)<\/div>/s';
if ( preg_match_all($regex, $page, $regs1, PREG_PATTERN_ORDER) ) {
echo preg_replace('<img(.*)src="([^ "]*)"([^>]*)>', '<a href="$2"><img$1src="$2"$3></a>', "", $regs1[0])."<br />";
} else {
print "Not found";
}
为什么我无法在div中显示图像?我希望只显示div中带链接的图像,但它没有显示任何我不知道为什么..我的代码是错的吗?或者我必须添加另一个功能?
答案 0 :(得分:0)
试试这个:
$curl = curl_init($link);
$userAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.A.B.C Safari/525.13";
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT ,0);
curl_setopt($curl, CURLOPT_USERAGENT, $userAgent);
curl_setopt($curl, CURLOPT_TIMEOUT, 400);
ini_set('max_execution_time', 300);
$page = curl_exec($curl);
if(curl_errno($curl)) // check for execution errors
{
echo 'Scraper error: ' . curl_error($curl);
exit;
}
$html= curl_close($curl);
$dom = new DOMDocument();
@$dom->loadHTML($html);
$regex = '/<div id="urunid">(.*?)<\/div>/s';
if ( preg_match_all($regex, $page, $regs1, PREG_PATTERN_ORDER) ) {
echo preg_replace('<img(.*)src="([^ "]*)"([^>]*)>', '<a href="$2"><img$1src="$2"$3></a>', $regs1[0])."<br />";
} else {
print "Not found";
}
问题是函数preg_replace()
的工作原理如下:
mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
第一个论点:你给'<img(.*)src="([^ "]*)"([^>]*)>'
作为模式,这是好的
第二个参数是替换'<a href="$2"><img$1src="$2"$3></a>'
OK
第三个论点应该是替换发生的主题。你给的是一个空字符串。
我建议您阅读有关preg_replace()的PHP文档,特别是关于“$ subject”的部分以及返回值的工作原理。
希望有所帮助