php - 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 循环中进行打印时,变量为空。
为什么会这样?谢谢。
解决方案
不要使用正则表达式来解析 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);
推荐阅读
- c++ - 跨平台指向库
- git - 为什么我无法提交我在 git 的 master 中意外删除的文件夹?
- android - 自动在 gradle 上添加模块依赖
- excel - 如何在简单的代码中修复“下标超出范围”错误
- python - pyqt日历我想将日期值传递给另一个类
- gremlin - Gremlin 驱动程序中的 idleConnectionTimeout
- xamarin - Picker 的动态 ItemDisplayBinding
- angular - 有没有办法在角度模板中动态设置元素名称?
- hive - Hive 是否支持临时视图?
- react-native - 如何返回结果值而不是承诺?