PHP preg_match_all无法获得img src

时间:2016-11-10 22:32:35

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

我正在用php写一个机器人。我想用curl获取图像源。我可以获得img标签,但我无法从img获得src值。我总是得到空字符串。你能看出我的错误是什么吗?

的index.php

    $baglan = Baglan("http://www.hurriyetemlak.com/konut-satilik/sakarya-karasu-yali-emlakcidan-apartman-dairesi/detay/23585876");
    preg_match('#<div id="dvSmallPhoto" class="small-photo mt10">                <ul class="thumbs">(.*?)                                    </ul>            </div>#', $baglan, $resimlerGenel);

    preg_match_all('#<li><figure>(.*?)</figure></li>#', $resimlerGenel[1], $resimler);
    $yeni = str_replace('"', '\'', $resimlerGenel[1]);
    preg_match_all("#<li><figure><img src='(.*?)' href='JavaScript:void(0);' onclick='return replaceImg(this)' tabindex='(.*?)' class='pretty' width='114' height='88' alt='(.*?)' /></figure></li>                                    #", $yeni, $resimLinkler);
    print_r($resimLinkler);

Baglan.php

function Baglan($url){
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_USER_AGENT, $_SERVER["HTTP_USER_AGENT"]);
    $cikti = curl_exec($curl);
    curl_close($curl);
    return str_replace(array("\n","\t","\r"), null, $cikti);
}

1 个答案:

答案 0 :(得分:2)

你可能最终会解决这个问题,但正则表达式不是正确的工具。

相反,你应该使用DOM解析器:

https://secure.php.net/manual/en/class.domxpath.php

它会让你的生活更轻松

以下是一个例子:

https://stackoverflow.com/a/10131137/1880431