【问题标题】:Find image src with regex in PHP在 PHP 中使用正则表达式查找图像 src
【发布时间】:2015-11-08 10:17:07
【问题描述】:

如何从仅包含img 标记的文本中提取image src? 顺便说一句,src 有时是双引号,有时是单引号。

【问题讨论】:

  • 还没有尝试...我正在考虑正则表达式
  • 为什么选择正则表达式,dom解析器有什么问题?
  • 我只有一个字符串,其中包含一些可能具有 img 元素的数据描述
  • 对于这两种引用风格,请尝试like this: \ssrc\s*=\s*['"]\s*\K[^'"\s]+

标签: php regex


【解决方案1】:

我不建议使用正则表达式来解析 html。相反,您可以使用 php 的 DOMDocument() 类,即使字符串的其余部分不是真正的 html,它仍然可以工作:

$html = 'Lorem ipsum<img src="test.png">dolor sit amet&[H*()';

libxml_use_internal_errors(true);
$dom = new DOMDocument();
$dom->loadHTML($html);
$imgs = $dom->getElementsByTagName('img');
foreach($imgs as $img) {
    $src = $img->getAttribute('src'); 
    echo $src;
}

根据您的 php 版本,您可能还想使用:

$dom->loadHTML($a, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);

【讨论】:

    【解决方案2】:

    试试

    $image = '<img class="foo bar test" title="test image" src=\'http://example.com/img/image.jpg\' alt="test image" width="100" height="100" />';
    $array = array();
    preg_match( "/src='([^\"]*)'/i", $image, $array ) ;
    print_r( $array[1] ) ;
    

    【讨论】:

    • 这工作正常,但问题是 src attr 有时是单引号,在这种情况下你的代码不起作用
    • 如果我的回答适合你,那你为什么不接受我的回答?
    • 你的答案很有效,但根据我的研究,使用 REGEX 解决这类问题并不是最好的方式。使用 DOMDocuments 更可靠
    • @ArefAnafgeh 你问regex所以我根据regex给你答案。您在问题中确实提到了从网络导出图像的最佳方式。顺便说一句regex 是更快的方式。
    • 你是对的......我也接受了你的回答。再次感谢你
    猜你喜欢
    • 2018-07-15
    • 2012-04-10
    • 1970-01-01
    • 2012-05-10
    • 2014-03-09
    • 2016-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多