用 <img> 标签替换所有图像网址

问题描述 投票:0回答:3

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

这是我的正则表达式:

/(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" />

(两个链接一个图像标签)

如何解决?

php regex image url
3个回答
3
投票

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

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

它有效!


0
投票

您的

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

现在,您可能会遇到包含字符串的图像的一些问题,例如,

gif
(例如,在
example.com/gift.png
中,只有
example.com/gif
会匹配)...但这可以通过在表达式后缀
\b来部分解决
(断字)或
\s
(空格)。您必须进行试验,看看什么对您的数据有效。


0
投票

使用非贪婪匹配:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.