我正在使用regexp查找并替换所有不以 url开头的匹配(http
相对路径将转换为完全绝对路径 即: url(foo / bar)> URL( 'http://foo/bar')
匹配
不匹配:
这是我到目前为止所提出的,但我不是100%
$fileContents = preg_replace(
'/url\(("|\')?(?<!(http))(.+?)("|\')?\)/i',
'url(\'' . $glmBaseUrl . $subDir . '/$3\')',
$fileContents
);
答案 0 :(得分:2)
这样的事情应该足够了:
preg_replace('/url\(\'?(?!http)([^\']+?)\'?\)/',
"url('$glmBaseUrl$subDir\$1')", $fileContents);
你的问题是你使用负面的后视而不是负面的前瞻。您还应该使用[^\']
代替.
,否则url('http://foo/bar')
将匹配不匹配的可选'
,因为它是'http
而不是http
{1}}然后将单引号与.+?
匹配。