regexp находят соответствие

Я работаю над regexp для нахождения и заменения всех соответствий, которые не запускаются с URL (http

относительные пути будут преобразованными во все абсолютные пути т.е.: URL (нечто/панель)> URL ('http://foo/bar')

соответствие:

  • URL (нечто/панель)
  • URL ('нечто/панель')

не соответствуйте:

Это - то, что я придумал до сих пор, но я не 100% там

       $fileContents = preg_replace(
            '/url\(("|\')?(?

1
задан veilig 14 August 2010 в 02:51
поделиться

1 ответ

Что-то вроде этого должно быть достаточно:

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

Проблема с вашим в том, что вы использовали отрицательный просмотр назад вместо отрицательного просмотра вперед. Вы также должны использовать [^ \ '] вместо . , в противном случае url ('http: // foo / bar') будет соответствовать, если не сопоставить необязательный ', что приведет к ошибке отрицательного просмотра вперед, потому что это ' http , а не http , а затем сопоставление одинарной кавычки с . +? .

2
ответ дан 2 September 2019 в 22:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: