RegularExp用于图片网址

时间:2011-08-06 06:30:39

标签: php regex

我想替换图像标签上的所有图像链接,但我不知道我做错了什么。

这是我的正则表达式:/(http:\/\/.+(png|jpeg|jpg|gif|bmp))/i

但是当我使用字符串:http://re-actor.net/uploads/posts/2009-08/1249921580_toyota-ft-hs.png and http://re-actor.net/uploads/posts/2009-08/thumbs/1249922220_toyota_ft-hs-14.jpg

结果为<img src="http://re-actor.net/uploads/posts/2009-08/1249921580_toyota-ft-hs.png and http://re-actor.net/uploads/posts/2009-08/thumbs/1249922220_toyota_ft-hs-14.jpg" />

(两个链接的一个图像标记)

如何解决?

3 个答案:

答案 0 :(得分:3)

这是因为你的正则表达式必须是不合适的。只需在正则表达式的末尾添加U标志:

/(http:\/\/.+(png|jpeg|jpg|gif|bmp))/Ui

它有效!

答案 1 :(得分:0)

您的.+匹配太多了。您需要使用.+?尽可能少地匹配。

现在,您可能会遇到包含字符串的图像的一些问题,例如gif(例如,在example.com/gift.png中,只有example.com/gif会匹配)...但这可能部分是通过使用\b(分词)或\s(空格)后缀表达式来修复。您必须尝试查看哪些内容适用于您的数据。

答案 2 :(得分:0)

使用非贪婪匹配:

/(http:\/\/.+?(png|jpeg|jpg|gif|bmp))/i

.+?仅匹配第一个(png|jpg|...