我想替换图像标签上的所有图像链接,但我不知道我做错了什么。
这是我的正则表达式:/(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" />
(两个链接的一个图像标记)
如何解决?
答案 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|...