Prestashop я не могу сделать regex_replace работает

Prestashop я не могу сделать regex_replace работает

05.06.2019 03:52:29 Просмотров 46 Источник

У меня есть это regex_replace в моем шаблоне :

{$product.unit_price_full|regex_replace:"/^[\d\s]*,?\d{2}\s*[€$₪]*\s*/u":""}

продукт$product.unit_price_fullвозвращает мне "1,12 $ L" и мой regex_replace "/^[\d\s]*,?\d{2}\s*[€$₪]*\s*/" : " "должен удалить все до "L", но он по-прежнему отображает все, как регулярное выражение, но я пробую его на regex101, он отлично работает.

Если я добавлю разметку unicode, она просто удалит символ доллара, но ничего больше

Это выход, который я получаю 1,00  2.21

Поэтому мне нужно захватить разметку пространства в моем правиле регулярного выражения?

У вопроса есть решение - Посмотреть?

https://stackoverflow.com/questions/56460879/prestashop-i-cant-make-regex-replace-works#comment99514416_56460879
это просто удаляет символ $ и ничего больше. (Я прочитал статью, которую вы только что отметили для дублирования, я опубликовал эту, потому что это не было решением, по-видимому : (пожалуйста, удалите флаг, если вы в порядке)
https://stackoverflow.com/questions/56460879/prestashop-i-cant-make-regex-replace-works#comment99514552_56460879
Я просто попробовал, все еще все отображается, но символ доллара, например, я редактирую свой пост, чтобы показать результат, который я получаю
https://stackoverflow.com/questions/56460879/prestashop-i-cant-make-regex-replace-works#comment99514767_56460879
Хорошо! Мое первое регулярное выражение работало с вашим предложением добавить одинарные кавычки вместо двойников o_o поставил это как ответ, поэтому я отмечаю ваш ответ как решение. Большое спасибо
https://stackoverflow.com/questions/56460879/prestashop-i-cant-make-regex-replace-works#comment99514918_56460879
Да, я удалил этот комментарий.

Ответы - Prestashop я не могу сделать regex_replace работает / Prestashop I can't make regex_replace works

Является ответом!
Wiktor Stribiżew

05.06.2019 04:39:52

Я предлагаю следующие изменения:

  • $внутри строкового литерала в двойных кавычках используется для интерполяции строковых литералов и должен быть экранирован с помощью одной обратной косой черты, если вам нужно сделать его литералом $char. Еще, и это рекомендуется, просто используйте одинарные кавычки
  • Поскольку у вас есть символы Unicode из диапазона ASCII в модификаторе pattern pass uдля регулярного выражения, чтобы шаблон строки и входная строка могли быть правильно проанализированы с помощью PCRE.

Воспользуйся

{$product.unit_price_full|regex_replace:'/^[\d\s]*,?\d{2}\s*[€$₪]*\s*/u':""}
https://stackoverflow.com/questions/56460879/prestashop-i-cant-make-regex-replace-works/56461681#comment99515028_56461681
Спасибо, это сработало просто отлично
Закрыть X