dongshan7708 2012-12-18 16:57
浏览 31
已采纳

html标签之间的PHP preg_match图像

I've got an html template like this:

    <div class="cont">
    <div class="...">
    <p>...<p>
    <img alt="" class="popup" src="DESIRED IMAGE LINK" style="..." /></p><p>...</p>
    ....

And i want to extract "DESIRED IMAGE LINK" inside the "" tag, currently i'm using this:

$pattern = '<div class="cont">.*?src=["\']?([^"\']?.*?(png|jpg|jpeg|gif))["\']?/i';
if (preg_match($pattern, $content, $image))
     .....

But it doesn't work, the error is:

    warning: preg_match() [function.preg-match]: Unknown modifier '.' 

How can i fix it? Thanks

  • 写回答

3条回答 默认 最新

  • dougu7546 2012-12-18 17:01
    关注

    The answer is, don't use regular expressions.

    $contents = <<<EOS
    <div class="cont">
        <div class="...">
        <p>...<p>
        <img alt="" class="popup" src="DESIRED IMAGE LINK" style="..." /></p><p>...</p>
    EOS;
    
    $doc = new DOMDocument;
    libxml_use_internal_errors(true);
    $doc->loadHTML($contents);
    libxml_clear_errors();
    
    $xp = new DOMXPath($doc);
    
    // get first image inside div.cont
    foreach($xp->query('//div[@class="cont"]//img[1]') as $node) {
            // output the src attribute
            echo $node->getAttribute('src'), PHP_EOL;
    }
    

    See also: DOMDocument DOMXPath

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥100 需要跳转番茄畅听app的adb命令
  • ¥50 寻找一位有逆向游戏盾sdk 应用程序经验的技术
  • ¥15 请问有用MZmine处理 “Waters SYNAPT G2-Si QTOF质谱仪在MSE模式下采集的非靶向数据” 的分析教程吗
  • ¥50 opencv4nodejs 如何安装
  • ¥15 adb push异常 adb: error: 1409-byte write failed: Invalid argument
  • ¥15 nginx反向代理获取ip,java获取真实ip
  • ¥15 eda:门禁系统设计
  • ¥50 如何使用js去调用vscode-js-debugger的方法去调试网页
  • ¥15 376.1电表主站通信协议下发指令全被否认问题
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证