2013-02-05 96 views
0
所有比赛

可能重复:
PHP URL to Link with Regex正则表达式 - 找到链接

我想preg_replace在TextBlock中的所有环节,让它们与字符串"<<IMAGE>>"取代

我试图匹配此文本块中的所有链接:

"Here we can see the chupacabra trying to eat http://somesite.com/img/chupacabra.jpg. 
look at the the snails somesite.com/img/snails.png" 

我使用这个正则表达式:

(https?:\/\/)?.*(jpg|png|jpeg|bmp|gif)

但我不能让它只选择链接的精确匹配。
我需要的是这样的:

“在这里,我们可以在蜗牛看到卓柏卡布拉试图吃http://somesite.com/img/chupacabra.jpg somesite.com/img/snails.png

测试上regexpal.com

+0

这不是一个新的“问题”。请先搜索。 – 2013-02-05 01:29:36

回答

4

有两种问题 - 首先是贪婪,所以它很适合。第二个是,。*包含空格,这些空格不在URL中,所以你没有得到正确的URL。

的simpliest解决方案就是使用匹配除了空格,这一切\ S:

(https?:\/\/)?\S*(jpg|png|jpeg|bmp|gif) 

更好的方法是使用这一个在使用? < =为了看后面

(?<= |^)(https?://)?[\w-]+(\.[\w-]+)+\.?(:\d+)?(/\S*)\.(jpg|png|jpeg|bmp|gif) 
+0

如何让它不匹配tttteerehttp://site.com/1.jpg? – Ted

+0

在开始处添加一个'\ b'标记这是一个字边界 – Philipp

+0

@ rehillx.com上的Phillip测试尽管听起来非常合乎逻辑,但它不会在那里工作 – Ted