Регулярные выражения. Smarty
Модификатор переменной regex_replace - поиск и замена при помощи регулярного выражения. Используется синтаксис функции PHP preg_replace().
Получить название файла с расширением из ссылки (url)
{$doc = "/wa-data/public/site/pages/7/advancedparams/price_160216.docx"} {$doc|regex_replace:'/(.+\/([^\/]+)$)/':'$2'} {* Результат *} price_160216.docx
Убрать символы тире и скобки. Оставить только цифры телефона
Можно использовать для ссылки вызова номера телефона на мобильных устройствах.
Например <a href="tel:+70000000000">+7 (000) 000-0000</a>
{$phone = "+7 (000) 000-0000"} {$phone|strip:''|regex_replace:"/[-\)\(\+]/":""} {* Результат *} +70000000000
Получить название домена из url
{$domainUrl = "https://www.domain.ru/"} {$domainUrl|regex_replace:"/^(https?:)?(\/\/)?(www\.)?/":""} {* Результат *} domain.ru {* Другие варианты *} {$domainUrl|regex_replace:'/\..+$/u':''} {$domainUrl|regex_replace:'/\.[^.]*?$/':''} {$domainUrl|regex_replace:"/https?:\/\/(?:[-\w]+\.)?([-\w]+)\.\w+(?:\.\w+)?\/?.*/i":"$1"}
Стилизация радио кнопок
Чтобы стилизовать стандартные radio input требуется "правильная" разметка html. Встречаются случаи когда нельзя изменить шаблон переменной. Применение регулярных выражений может спасти ситуацию
{$checkout_contact_form->html()|regex_replace:'/(<input type="radio" [^="">]+>?)/i':'$1 <span class="icon-radio"></span>'|replace:'<label>':'<label class="custom-radio">'} {* Было *} <label> <input type="radio" checked="checked" name="customer[sposob-dostavki]" value="Самовывоз"> Самовывоз </label> {* Стало *} <label class="custom-radio"> <input type="radio" checked="checked" name="customer[sposob-dostavki]" value="Самовывоз"> <span class="icon-radio"></span> Самовывоз </label>
Удаляем комментарии
{* Любые комментарии *} {$code|regex_replace:'/((?:\/\*(?:[^*]|(?:\*+[^*\/]))*\*+\/)|(?:\/\/.*))/':''} {* Комментарии в строку /* text */ *} {$code|regex_replace:'!/\*.*?\*/!s':''} {* Многострочные комментарии /*** some text *****/ *} {$code|regex_replace:'/\n\s*\n/':'\n'}