我想通过检查图片的扩展来过滤图片,我的编码如下:
preg_match_all("/<img.*?src=\"(.*?)\".*?\/>/i", $this->content, $resultImg);
,结果如下:
Array (
[0] => xxx/logo.png?1253
[1] => xxx/banner.jpg?1253
[2] => xxx/6606072563_a9d41ef0ca_z_medium.jpeg?1253
[3] => xxx/6605789711_43e2ca1f0d_z_medium.bmp?1253
)
但系统只接受jpg,png&amp; gif,我可以知道如何删除图片网址的扩展名不是jpg,png&amp; gif使用上面的编码?
全部谢谢
答案 0 :(得分:0)
如果扩展名为png jpg或仅限gif
,则以下正则表达式将返回匹配项/<img.*?src=\"(.*?)\.(jpg|png|gif)\".*?\/>/i
编辑以照顾您的数字参数
/<img.*?src=\"(.*?)\.(jpg|png|gif)(\?[0-9]*)?\".*?\/>/i
你应该通过将'char作为地址的包装器(img标签的src参数)来改进 我很好奇,所以你能解释一下为什么你使用lasy start(*?)运算符吗?我从来没有用它,所以不知道在哪个用例中它是有用的。
此致
答案 1 :(得分:0)
要获取属性,您应该使用|运算符在regexp中。 这是一个丑陋的正则表达式,可以完成这项工作:
/<img.*?(((class=\"([a-z0-9 ]+)\")|(style=\"([a-z0-9 :;#\-]+)\")|(name=\"([a-z0-9]+)\")|(id=\"([a-z0-9]+)\")|(src=\"(.*?)\.(jpg|png|gif)(\?[0-9]*)?\")).*?)+\/>/i
我使用以下代码进行测试:
<img style="margin-left:20px;color:#fff;" onclick="javascript::void()" class="xxx" id="4" src="test.gif?12345" name="anam" />
如果你试图解析html语法,你应该使用htmlsimpledom这样的东西,这样就不那么难理解和实现了