2010-08-14 161 views
1

我工作的一個正則表達式查找和替換所有不與URL(HTTP正則表達式查找匹配

相對路徑將被轉換爲完全絕對路徑 即開始比賽: 網址(富/巴)> URL( 'http://foo/bar ')

匹配:

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

不匹配:

這是我想出到目前爲止,但我'不是100%那裏

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

回答

2

這樣的事情應該足夠了:

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

您的問題在於您使用了負向後視而不是負向視向。您還應該使用[^\']代替.,否則url('http://foo/bar')將不匹配可選',沒有負超前,因爲它'http,而不是http,然後用.+?匹配的單引號匹配。

+0

正是我所需要的,感謝您的幫助和提示! – veilig 2010-08-14 04:11:02