正则表达式:使用PHP查找字符串中的图像URL

时间:2014-02-11 21:59:03

标签: php regex image url

我有一个非常复杂的字符串,我想找到并用静态网址替换所有以.jpg,.png或.gif结尾的网址。例如;

$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);

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

要确定正则表达式,请使用在线工具测试字符串。

http://www.regextester.com

因为在你的示例字符串中,所有链接都以“http://”开头,我们可以用它开始我们的模式。我们知道它们将以文件类型(jpg,png)的扩展结束,并且介于两者之间。“/ p>

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

使用.+会匹配任何内容,并附加?会使其不合适。否则,我们将获得从第一个链接开始到最后一个结尾的所有内容。

警告此正则表达式基于您的示例字符串。如果链接是“www.someplace.com/someimage.jpg”则不会匹配