2014-02-11 42 views
0

字符串只图像的URL我有一个非常复杂的字符串,我想查找和替换,与为.jpg,.png或.gif与静态URL结尾的所有URL。例如;正则表达式:查找与PHP

$string = "Lorem ipsum dolor sit amet, http://www.website.com/images/some.jpg; consul delicata comprehensam eos at. Mea rebum laudem deterruisset et, ex epicuri constituto his. Sea ad appareat democritum. http://www.anotherwebsite.com/images/some.png Omnis vituperata dissentiunt an duo. Sumo diceret lobortis at sed, singulis aliquando prodesset ex sit."; 

$regex = ?; 
$static_image_url= "http://new_image_url"; 

return preg_replace($regex, $static_image_url, $string); 

请注意,这个字符串可能比这更复杂,网址是动态的,这不是HTML。

非常感谢您提前。

最好的问候,

编辑:

这种情况这一次的工作;

return preg_replace('/https?:\/\/[^ ]+?(?:\.jpg|\.png|\.gif)/', $static_image_url, $string); 
+0

是的,那么你有什么尝试? –

+0

我在哪里!研究并尝试编辑这一个,但没有运气http://stackoverflow.com/questions/7461922/just-get-the-image-url-from-string-in-php – user3213174

+0

尝试这样的事情入手:HTTP: //regex101.com/r/nX1sN3 –

回答

1

这应该更换链接只要他们没有在他们的空间(因为链接显然不能有空格)。

$string = "Lorem ipsum dolor sit amet, http://www.website.com/images/some.jpg; consul delicata comprehensam eos at. Mea rebum laudem deterruisset et, ex epicuri constituto his. Sea ad appareat democritum. http://www.anotherwebsite.com/images/some.png Omnis vituperata dissentiunt an duo. Sumo diceret lobortis at sed, singulis aliquando prodesset ex sit."; 
$static_image_url= "http://new_image_url"; 
return preg_replace('/https?:\/\/[^ ]+?(?:\.jpg|\.png|\.gif)/', $static_image_url, $string); 
+0

谢谢。我发现了一个非常好的工作。但你的看法很详细。 – user3213174

+0

你的问题是它没有做它应该做的。例如,它取代了“htt:// test.jpg”和“http://www.the link.jpg”,欢迎您。 – Anonymous

+0

是的,你绝对会更好! – user3213174

0

为了弄清楚正则表达式,使用在线工具来测试你的字符串。

http://www.regextester.com

因为在你的榜样字符串所有的链接均以“http://”我们可以开始我们的这种模式。我们知道,它们将以文件类型(jpg,png)的扩展以及两者之间的整个混乱结束。

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

使用.+将匹配任何东西,追加?使得ungreedy。否则,我们将获得从第一个链接开始到最后一个结束的所有内容。

警告此正则表达式是根据你的榜样字符串。如果链接是“www.someplace.com/someimage.jpg”,它会不匹配

+0

这会错误地替换诸如“http:// www.website.com/images/somejpg”之类的链接。另外,你忘了'.gif'。 – Anonymous

+0

谢谢你的回答,这个也适用。 – user3213174