Как эффективно заменить кавычки (или символы переноса) в части динамической html-строки?

#php #replace #conditional

#php #заменить #условные операторы

Вопрос:

У меня есть html-строка, подобная —

...style="background-position: left top; background-image: url("http://localhost/abc/{DYNAMIC CONTENT}") etc...

Каким был бы быстрый и эффективный способ заменить двойные кавычки внутри url("") части на одинарные, если после style =» двойные кавычки есть», мне не нужно заменять кавычки везде, только в этом определенном месте. Спасибо.

Комментарии:

1. Было бы хорошо знать, как {DYNAMIC CONTENT} вставляется.

Ответ №1:

Используйте регулярное выражение (соответствует достаточному контексту для уменьшения ложных срабатываний):

 $src = preg_replace(
           '#(style="[^"] :s*url)   [(]"   ([^"] )   "[)]#x',
           "$1('$2')",
           $src
       );
  

Хотя это заменяет только " " пару двойных кавычек на строку style= . Таким образом, вам, возможно, придется дважды запускать его над вашим исходным кодом, если вы ожидаете несколько искаженных атрибутов / url («..») выражений.

Комментарии:

1. Возможно, это правильное направление, но example не работает. Также я не смог найти объяснение о символе : в регулярном выражении. Хотя спасибо, 1 за ответ.

2. Действительно нет? Я протестировал это на вашем точном примере фрагмента HTML. — : Просто представляет буквальное двоеточие, потому что url( ему должна предшествовать единица. — codepad.org/QdhemmBY в качестве теста.

3. Извини, Марио, ты был прав, с моей стороны произошла опечатка, я принимаю твой ответ.