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