php preg替换条件

时间:2015-06-30 14:41:27

标签: php regex preg-replace

你好我想替换这个css代码:

background:url("/media/image.png")

我有一个网址

$url3 ="http://example.com";

这是我使用的代码:

preg_replace('~url\(("|\')?/?(.*?)(?:\1)?\)~', 'url($1'.$url3.'/$2$1)', background:url("/media/image.png");

此代码的输出给了我:

background:url("http://example.com/media/image.png") 

这就是我想要的,但我的问题是我想为我的正则表达式添加一些条件,例如,如果网址在开始时有//httphttps,则忽略它不会添加http://example.com/

这是我试过的正则表达式:

~url\(("|\')?/?(.*?)(?:\1)?\)~(((?!'|\"|http://|https://|//).)*)(['\"])-i 

但它没有用......

3 个答案:

答案 0 :(得分:0)

由于您正在对替换进行硬编码,我认为最简单的方法就是进行另一次检查:

if (false === preg_match("~url\((\"|')(//|https?://)~", $string)) {
    // do replacement
}

另请注意,CSS中url()的参数不需要引用("')。

答案 1 :(得分:0)

这可以使用负面看法来完成:

url\(("|\')((?!http://|https://).*?)(?:\1)\)

您可以在行动中here观看。

查看this question了解详情。

答案 2 :(得分:0)

检查

metricDate