Текстовые модификаторы Fenom

Модификатор ematch

Выполняет проверку на соответствие регулярному выражению. Подробнее о регулярных выражениях.

{$string|ematch:$pattern}

Ищет в заданном тексте $subject совпадения с шаблоном $pattern.

{if $color|ematch:'/^(.*?)gr[ae]y$/i'}
  какой-то оттенок серого ...
{/if}

Модификатор ereplace

Выполняет поиск и замену по регулярному выражению. Подробнее о регулярных выражениях.

{$string|ereplace:$pattern:$replacement}

Выполняет поиск совпадений в строке $subject с шаблоном pattern и заменяет их на replacement.

$replacement может содержать ссылки вида \n, $n или ${n}, причем последний вариант предпочтительней. Каждая такая ссылка будет заменена на подстроку, соответствующую n-ой подмаске. n может принимать значения от 0 до 99, причем ссылка \0 (либо $0) соответствует вхождению всего шаблона. Подмаски нумеруются слева направо, начиная с единицы. Для использования обратного слэша, его необходимо продублировать.

{var $string = 'April 15, 2014'}

{$string|ereplace:'/(\w+) (\d+), (\d+)/i':'${1}1, $3'} {* April1, 2014 *}

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

Модификатор escape

Используется для кодирования или экранирования спецсимволов по алгоритмам экранирования HTML, URL'ов и javascript. По умолчанию активирован режим экранирования HTML.

{$text|escape:$type = 'html':$charset = 'UTF8'}

Модификатор поддерживает несколько режимов работы

  • html: экранирует HTML сущности в строке.
  • url: экранирует строку для использования в URL.
  • js: экранирует строку для использования в JavaScript.

Модификатор e является псевданимом модификатора от escape.

Параметр $charset указывает кодировку для режима html.

Модификатор esplit

Разбивает строку по регулярному выражению. Подробнее о регулярных выражениях.

{$string|esplit:$pattern = '/,\s*/'}

По умолчанию модификатор разбивает строку по запятой с возможнымиы проблеами

{var $fruits1 = "banana, apple, pear"|esplit}
$fruits1 — массив ["banana", "apple", "pear"]

{var $fruits2 = "banana; apple; pear"|esplit:'/;\s/'} is ["banana", "apple", "pear"]
$fruits2 — массив ["banana", "apple", "pear"]

Модификатор split

Разбивает строку с помощью разделителя

{$string|split:$delimiter = ","}

Возвращает массив строк, полученных разбиением строки с использованием $delimiter в качестве разделителя.

{var $fruits1 = "banana,apple,pear"|split}
$fruits1 is array ["banana", "apple", "pear"]

{var $fruits2 = "banana,apple,pear"|split:',apple,'}
$fruits2 is array ["banana", "pear"]
 

Модификатор join

Объединяет элементы массива в строку.

{$array|join:$delimiter = ","}

Объединяет элементы массива с помощью строки $delimiter.

{var $fruits1 = ["banana", "apple", "pear"]}
{$fruits1|join} выведет banana, apple, pear
{$fruits1|join:" is not "} выведет banana is not apple is not pear
 

Модификатор in

Модификатор является реализацией оператора содержания in.

{if $number|in:[1, 3, 42]}
...
{/if}

Модификатор length

Модификатор возвращает количество элементов массива, итератора или символов в строке (работает с UTF8).

{if $images|length > 5}
 to many images
{/if}

Модификатор lower

Переводит строку в нижний регистр. Является эквивалентом функции PHP strtolower(). Имеет псевданим low.

{set $name = "Bzick"}

{$name}         выведет Bzick
{$name|lower}   выведет bzick
{$name|low}      выведет bzick

Модификатор match

Проверяет совпадение строки с паттерном. Среднестатистический пользователь знаком с подстановками оболочки, как минимум с самыми простыми из них - ? и *, так что использование match вместо ematch для поиска в пользовательской части сайта может быть намного удобнее для пользователей, не являющихся программистами.

{$string|match:$pattern}

Специальные символы:

  • ? — соответствие одному или нулю любых символов. ?at соответствует Cat, cat, Bat или bat.
  • * — соответствие любому количеству символов. Law* соответствует Law, Laws, или Lawyer.
  • [characters] — соответствие символа группе символов. [CB]at соответствует Cat или Bat, но не cat, rat или bat.
  • \ - экрнирующийсимвол. Law\* будет соответвовать только Law*
{if $color|match:"*gr[ae]y"}
  какой-то оттенок серого
{/if}

Замечание: максимальная длинна проверяемой строки не должна превышать 4096 символов.

Модификатор replace

Заменяет все вхождения строки поиска на строку замены

{$string|replace:$search:$replace}

Этот модификатор возвращает строку, в котором все вхождения $search в $subject заменены на $replace.

{$fruits|replace:"pear":"orange"}

Модификатор strip

Заменяет все повторяющиеся пробелы, переводы строк и символы табуляции одним пробелом.

This replaces all repeated spaces and tabs with a single space, or with the supplied string.

{"   one    two   "|strip}

Результат обработки

one two

Опционально указывается флаг мультистрочности: true - тку же срезать переносы строк, false - срезать все кроме переносов строк.

{"    multi
    line
    text    "|strip:true}

Результат обработки

multi line text

Модификатор truncate

Обрезает переменную до определенной длинны, по умолчанию - 80 символов. В качестве необязательного второго параметра, вы можете передать строку текста, которая будет отображатся в конце обрезанной переменной. Символы этой строки не включаются в общую длинну обрезаемой строки. По умолчанию, truncate попытается обрезать строку в промежутке между словами. Если вы хотите обрезать строку строго на указаной длинне, передайте в третий необязательный параметр значение true.

{$long_string|truncate:$length:$etc:$by_words:$middle}
  • $length, обязателен. Определяет максимальную длинну обрезаемой строки.
  • $etc, по умолчанию .... Текстовая строка, которая заменяет обрезанный текст. Её длинна НЕ включена в максимальную длинну обрезаемой строки.
  • $by_word, по умолчанию FALSE. Определяет, обрезать ли строку в промежутке между словами (true) или строго на указаной длинне (false).
  • $middle, по умолчанию FALSE. Определяет, нужно ли обрезать строку в конце (false) или в середине строки (true).
{var $str = "very very long string"}

{$str|truncate:10:" read more..."} output: very very read more...
{$str|truncate:5:" ... ":true:true} output: very ... string

Модификатор работает с unicode без дополнительных расширений.

Модификатор unescape

Модификато unescape является обратным действием модификатора escape. Так же имеет режимы html, js and URI.

{$text|unescape:$type = 'html'}

Модификатор upper

Переводит строку в верхний регистр. Является эквивалентом функции PHP strtoupper(). Имеет псевдоним up.

{var $name = "Bzick"}

{$name}         выводит Bzick
{$name|upper}   выводит BZICK
{$name|up}      выводит BZICK