Smarty: Почему regex_replace не работает, когда используется класс в теге? - PullRequest
0 голосов
/ 05 октября 2018

Я использую smarty 3. Я попробовал этот код:

{$ver|regex_replace:"/something/":"<div class="xyz">anything</div>"}

, и он вернул следующую ошибку:

HTTP ERROR 500

Если я удаляю class="xyz" внутри тега div и использую следующий код:

{$ver|regex_replace:"/something/":"<div>anything</div>"}

, он работает нормально.

1 Ответ

0 голосов
/ 10 октября 2018

По сути, вы почти предоставили ответ на свой вопрос самостоятельно.

В smarty у вас есть переменная $var, и вы используете модификатор переменной smarty regex_replace для выполненияпоиск и замена регулярного выражения в этой переменной.

Модификатор переменной smarty regex_replace требует два параметра:

enter image description here

Оба параметра имеют тип string.Параметры в модификаторе переменной smarty разделяются двоеточием.

В вашем первом примере кода

{$ver|regex_replace:"/something/":"<div class="xyz">anything</div>"}

ваш первый параметр "/something/", но второй не работает, потому что вы нене экранируйте кавычки!

Во втором примере кода

{$ver|regex_replace:"/something/":"<div>anything</div>"}

вы удалили атрибут класса в вашем div, так что у вас больше нет проблемы с экранированием кавычек,Вот почему ваш второй пример кода работает.

Имея это в виду, теперь вы можете исправить свой первый пример кода, избегая кавычек

{$ver|regex_replace:"/something/":"<div class=\"xyz\">anything</div>"}

или вы можете использовать одинарные кавычки, напримерпредлагается в комментариях:

{$ver|regex_replace:"/something/":"<div class='xyz'>anything</div>"}

Лично я предпочитаю использовать одинарные кавычки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...