【发布时间】:2013-11-05 11:20:13
【问题描述】:
我希望有一个可以在文本中解析的函数,然后它将所有包含 (jpg|png|gif|jpeg|bmp) 扩展名的链接替换为<img> 标签,之后它还将替换所有其他不带 (jpg|png|gif|jpeg|bmp) 扩展名且带有 <a> 标签的链接。
例如它应该替换:
http://imgur.com/gallery/TpGvHBL http://i.imgur.com/TpGvHBL.jpg
到
<a href="http://imgur.com/gallery/TpGvHBL" target="_blank">http://imgur.com/gallery/TpGvHBL</a> <img src="http://i.imgur.com/TpGvHBL.jpg" />
================================================ ==============================
目前我可以使用下面的正则表达式将图片 url 替换为 <img> 标签:
$text = preg_replace('#((https?|ftp):\/\/([^\s]*)\.(jpg|gif|png))#', '<img src="$1" />', $text);
以及下面将普通网址替换为<a>标签:
$text = preg_replace('/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/i', '<a href="$1" target="_blank">$1</a>', $text);
我想要的是更改第二个正则表达式以仅替换非图像 url,因为它会与我的第一个正则表达式冲突。
谢谢。
【问题讨论】:
-
你试过什么? Stackoverflow 不是获取现成代码的免费服务。试试看,我很乐意提供帮助。提示:1)尝试将 url 与这些扩展匹配 2)将这些 url 保存在一个数组中 3)循环遍历该数组,删除那些扩展 4)循环遍历数组(不带扩展)并尝试进行一些正则表达式替换,使用 @987654329 @ 防止错误匹配 5) 享受
-
嗨@HamZa,实际上我正在寻找一种可以直接替换文本中所有url而不是使用数组的解决方案,但是,我已经用我尝试过的代码进行了更新,请给我一些建议。谢谢!
标签: php html regex preg-replace expression