最近在 WordPress 某项目中需要从文章内容中匹配多个图片,在实践的过程中掉进坑里爬了很久才出来。最开始我使用的正则表达式如下:
-
<img.*?src=[\'|\"](.*?(?:[\.gif|\.jpg|\.png|\.jpeg]))[\'|\"].*?[\/]?>
然而使用这个正则表达式来匹配图片的话就会有一个缺陷,如果 src 里面的值不是一个标准的图片地址,那么很有可能就会匹配出错。比如下面的代码,内容中共有三个 img 标签,其中第二个 img 的 src 属性是 http://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,m_fixed,h_100,w_100
<?php $content = '<p>我是第一段</p><p>我是第二段图片前文字<img src="http://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg" />我是第三段图片前文字<img src="http://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,m_fixed,h_100,w_100" /><img src="http://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg" /></p><p>我是第四段文字</p>'; $image_pattern = "/<img.*?src=[\'|\"](.*?(?:[\.gif|\.jpg|\.png|\.jpeg]))[\'|\"].*?[\/]?>/";

在WordPress项目中,作者遇到从文章内容匹配图片URL的问题,原有的正则表达式容易出错。通过改进正则表达式<img.*?src=['|"](.*?)['|"].*?[/]?>,并配合代码处理,成功匹配并过滤出有效的图片地址,避免了非标准图片URL导致的匹配错误。
最低0.47元/天 解锁文章
401

被折叠的 条评论
为什么被折叠?



