【问题标题】:Display images in div with preg_match or preg_replace使用 preg_match 或 preg_replace 在 div 中显示图像
【发布时间】:2016-02-04 10:11:32
【问题描述】:

我的代码在这里;

$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 中显示带有链接的图像,但它什么也没显示我不知道为什么..我的代码错了吗?还是我必须添加另一个功能?

【问题讨论】:

    标签: php image curl preg-replace preg-match-all


    【解决方案1】:

    试试这个:

    $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 ]] )
    

    第一个参数:您将'&lt;img(.*)src="([^ "]*)"([^&gt;]*)&gt;' 作为模式,这没关系。
    第二个参数是替换'&lt;a href="$2"&gt;&lt;img$1src="$2"$3&gt;&lt;/a&gt;' OK
    第三个论点应该是发生替换的主题。你给的是一个空字符串。

    我建议您阅读有关preg_replace() 的 PHP 文档,尤其是有关“$subject”以及返回值如何工作的部分。

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-17
      相关资源
      最近更新 更多