我有一个非常复杂的字符串,我想找到并用静态网址替换所有以.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);
答案 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://”开头,我们可以用它开始我们的模式。我们知道它们将以文件类型(jpg,png)的扩展结束,并且介于两者之间。“/ p>
http:\/\/.+?(\.jpg|\.png|\.gif)
使用.+
会匹配任何内容,并附加?
会使其不合适。否则,我们将获得从第一个链接开始到最后一个结尾的所有内容。
警告此正则表达式基于您的示例字符串。如果链接是“www.someplace.com/someimage.jpg”则不会匹配