首页 > 解决方案 > preg_match() 不匹配 img src

问题描述

我在 php 变量中有这个字符串。

$str = 'This is an iamge: <img src="images/Christmas.PNG" width=70%; height=40%">';

我正在搜索的模式:

$pattern = '/<img src="(.*?)>/g';

然后我有这个preg_match()

preg_match($pattern, $str, $matches, PREG_OFFSET_CAPTURE);

当我$matches直接通过echo $matches或在 foreach 循环中进行打印时,变量为空。

为什么会这样?谢谢。

标签: phpregex

解决方案


不要使用正则表达式来解析 HTML。有专门为此而设计的工具。

您可以使用它DOMDocument来解析 HTML,然后轻松获取src属性的值:

$previous_value = libxml_use_internal_errors(true);
$string = 'This is an iamge: <img src="images/Christmas.PNG" width=70%; height=40%">';
$dom = new DOMDocument();
$dom->loadHTML($string);
echo $dom->getElementsByTagName('img')->item(0)->getAttribute("src");
libxml_clear_errors();
libxml_use_internal_errors($previous_value);

演示


推荐阅读