Что-то вроде этого должно быть достаточно:
preg_replace('/url\(\'?(?!http)([^\']+?)\'?\)/',
"url('$glmBaseUrl$subDir\$1')", $fileContents);
Проблема с вашим заключается в том, что вы использовали отрицательный взгляд позади, а не отрицательный взгляд вперед.Вы также должны использовать [^\']
вместо .
, иначе url('http://foo/bar')
будет совпадать, если не будет совпадать с необязательным '
, что приведет к неудачной отрицательной проверке, потому что это 'http
, а не http
, а затем сопоставит одну кавычку с .+?
.