正则表达式找到匹配

时间:2010-08-14 02:51:35

标签: php regex preg-replace

我正在使用regexp查找并替换所有不以 url开头的匹配(http

相对路径将转换为完全绝对路径 即: url(foo / bar)> URL( 'http://foo/bar')

匹配

  • URL(富/巴)
  • URL( '富/酒吧')

不匹配:

这是我到目前为止所提出的,但我不是100%

       $fileContents = preg_replace(
            '/url\(("|\')?(?<!(http))(.+?)("|\')?\)/i',
            'url(\'' . $glmBaseUrl . $subDir . '/$3\')',
            $fileContents
        );

1 个答案:

答案 0 :(得分:2)

这样的事情应该足够了:

preg_replace('/url\(\'?(?!http)([^\']+?)\'?\)/',
    "url('$glmBaseUrl$subDir\$1')", $fileContents);

你的问题是你使用负面的后视而不是负面的前瞻。您还应该使用[^\']代替.,否则url('http://foo/bar')将匹配不匹配的可选',因为它是'http而不是http {1}}然后将单引号与.+?匹配。