正则表达式有助于替换动态内容中的URL元素

时间:2012-03-20 09:59:47

标签: php regex image

有很多URL查找regEx,我可能错过了一个技巧,可以找出如何使它们适应我的需求,但RegEx和我没有上瘾。

情况:我正在使用PHP / mySQL加载动态内容,其中包含我需要修改的各种img标签。

例如:

Blah blah <img src="/oldsite/images/image1.gif" alt="image blah" title="image blah" /> blah blah <img src="/otheroldsite/images/image2.gif" alt="image blah" title="image blah" />

我需要删除img src =“和images / ....之间的任何内容 “任何事情”都是关键点,因为我可能在内容中有一系列“根文件夹”

最终以

结束
Blah blah <img src="images/image1.gif" alt="image blah" title="image blah" /> blah blah <img src="images/image2.gif" alt="image blah" title="image blah" />

非常感谢,我知道你们可以做到!

2 个答案:

答案 0 :(得分:0)

您正在寻找lookaround assertions。试试这个

(?<=img src=").*?(?=images\/)

并替换为空字符串。

here on Regexr

基本上,您使用.*?尽可能少地匹配任何字符(换行符除外),其中(?<=img src=")确保左侧有img src="(?=images\/)确保在那里在右边是images\/

(...)开头的群组?<=称为正向后置断言,以?=开头的群组称为正向前瞻断言

答案 1 :(得分:0)

使用此:

preg_replace("/src=\"(.*?)\/images/", "src=\"images", $string)