Модификаторы переменных
Внутри шаблона после названия переменной через символ "|" можно указать один или несколько модификаторов. Эти модификаторы позволяют изменить данные перед их вставкой в шаблон. Например, с помощью модификаторов
upper и lower можно изменить регистр символов. В Smarty доступны сле-
дующие модификаторы переменных:
? upper заменяет все символы строки соответствующими прописными бук-
вами:
$smarty->assign(‘str’, ‘строка в нижнем регистре’);
…
{$str|upper} {* Выведет: СТРОКА В НИЖНЕМ РЕГИСТРЕ *}
? lower заменяет все символы строки соответствующими строчными бук-
вами:
$smarty->assign(‘str’, ‘СТРОКА В ВЕРХНЕМ РЕГИСТРЕ’);
…
{$str|lower} {* Выведет: строка в верхнем регистре *}
? capitalize делает первые символы всех слов прописными:
$smarty->assign(‘str’, ‘строка в нижнем регистре’);
…
{$str|capitalize} {* Выведет: Строка В Нижнем Регистре *}
? cat добавляет указанный фрагмент в конец строки:
$smarty->assign(‘str’, ‘строка’);
…
{$str|cat:" добавленный фрагмент"}
{* Выведет: строка добавленный фрагмент *}
? count_characters возвращает количество символов в строке. Если в ка-
честве значения указать true, то при подсчете будут учитываться пробелы:
$smarty->assign(‘str’, ‘строка с пробелами’);
…
{$str|count_characters} {* Выведет: 16 *}
{$str|count_characters:true} {* Выведет: 18 *}
? count_paragraphs возвращает количество не пустых строк:
$smarty->assign(‘str’, "строка1\nстрока2\n\nстрока3");
…
{$str|count_paragraphs} {* Выведет: 3 *}
? count_sentences возвращает количество предложений в строке:
$smarty->assign(‘str’, "Это предложение 1. Предложение 2.");
…
{$str|count_sentences} {* Выведет: 2 *}
? count_words возвращает количество слов в строке:
$smarty->assign(‘str’, ‘строка с пробелами’);
…
{$str|count_words} {* Выведет: 3 *}
? date_format форматирует дату согласно указанному шаблону. В строке формата можно указать специальные символы, которые применяются в функции strftime() (см. разд. 5.17). Пример:
setlocale(LC_ALL, "ru_RU.CP1251", "Russian_Russia.1251");
$smarty->assign(‘d’, time());
…
{$d|date_format} {* Выведет: ноя 17, 2009 *}
{$d|date_format:"%d.%m.%Y"} {* Выведет: 17.11.2024 *}
{$smarty.now|date_format:"%d.%m.%Y"} {* Выведет: 17.11.2024 *}
? default позволяет указать значение по умолчанию, если переменная не определена или пустая:
$smarty->assign(‘var1’, ”);
$smarty->assign(‘var2’, ‘5’);
…
{$var1|default:"Значение по умолчанию"}
{* Выведет: Значение по умолчанию *}
{$var2|default:"Значение по умолчанию"} {* Выведет: 5 *}
? escape кодирует или экранирует спецсимволы в строке. В первом пара- метре могут быть указаны следующие значения: "html", "htmlall", "url", "urlpathinfo", "quotes", "hex", "hexentity", "javascript", "mail". Во втором параметре задается кодировка. Пример:
$smarty->assign(‘str’, ‘абв"<>\’?’);
…
{$str|escape:"html"} {* Выведет: абв"<>'? *}
{$str|escape:"htmlall":"cp1251"}
{* Выведет: абв"<>'? *}
{$str|escape:"url"} {* Выведет: %E0%E1%E2%22%3C%3E%27%3F *}
{$str|escape:"hex"} {* Выведет: %e0%e1%e2%22%3c%3e%27%3f *}
{$str|escape:"javascript"} {* Выведет: абв\"<>\’? *}
? indent создает отступы в начале каждой строки. В первом параметре можно указать количество повторений, а во втором — символы, которые будут повторяться. По умолчанию пробел повторяется четыре раза.
Пример:
$smarty->assign(‘str’, "Строка 1\nСтрока 2");
…
{$str|indent}
{* Выведет:
Строка 1
Строка 2
*}
{$str|indent:3:" "}
{* Выведет:
Строка 1
Строка 2
*}
? nl2br добавляет перед всеми символами новой строки (\n) тег <br />:
$smarty->assign(‘str’, "Строка 1\nСтрока 2\nСтрока 3");
…
{$str|nl2br}
{* Выведет: Строка 1<br /> Строка 2<br /> Строка 3
*}
? replace производит замену в строке. Эквивалент PHP-функции str_replace() (см. разд. 5.15.4). В первом параметре указывается иско- мая строка, а во втором — строка для замены:
$smarty->assign(‘str’, "Привет, Вася");
…
{$str|replace:"Вася":"Петя"} {* Выведет: Привет, Петя *}
? regex_replace производит замену в строке с помощью регулярных вы- ражений. Эквивалент PHP-функции preg_replace() (см. разд. 5.15.9). В первом параметре указывается регулярное выражение, а во втором — строка для замены. Удалим все пробельные символы в начале и конце строки:
$smarty->assign(‘str’, " \t Строка \r\n ");
…
{$str|regex_replace:"/(^\s+)|(\s+$)/s":""}
{* Выведет: "Строка" *}
? spacify вставляет указанный фрагмент между символами в строке. По умолчанию вставляется пробел:
$smarty->assign(‘str’, ‘Строка с пробелами’);
…
{$str|spacify}
{* Выведет: С т р о к а с п р о б е л а м и *}
{$str|spacify:"-"}
{* Выведет: С-т-р-о-к-а- -с- -п-р-о-б-е-л-а-м-и *}
? string_format производит форматирование строки:
$smarty->assign(‘str’, 1256.5684);
…
{$str|string_format:"%.2f"} {* Выведет: 1256.57 *}
? strip производит замену нескольких (идущих подряд) пробельных сим-
волов на пробел или указанный фрагмент:
$smarty->assign(‘str’, "Строка \n\t с \r пробелами");
…
{$str|strip} {* Выведет: Строка с пробелами *}
{$str|strip:" "}
{* Выведет: Строка с пробелами *}
? strip_tags удаляет из строки все HTML-теги. Если в качестве параметра указать значение true (значение по умолчанию), то теги будут заменяться на пробел, а если false — то никакой символ вставляться вместо тегов не будет:
$smarty->assign(‘str’, "'<b>Строка</b>’");
…
{$str|strip_tags} {* Выведет: ‘ Строка ‘ *}
{$str|strip_tags:false} {* Выведет: ‘Строка’ *}
? truncate обрезает строку до определенной длины. В первом параметре указывается максимальная длина строки (по умолчанию 80 символов). Во втором параметре можно задать фрагмент, который будет добавлен к об- резанной строке (по умолчанию "…"). Если в третьем параметре указать значение false (значение по умолчанию), то строка будет обрезана меж- ду словами, а если true — то будет строго учитываться длина строки. Если в четвертом параметре указать значение false (значение по умолча- нию), то строка будет обрезана в конце, а если true — то в середине.
Пример:
$smarty->assign(‘str’, ‘Это очень длинная строка’);
…
{$str|truncate:15}
{* Выведет: Это очень… *}
{$str|truncate:15:"…":true}
{* Выведет: Это очень дл… *}
{$str|truncate:15:"…":false:true}
{* Выведет: Это оч…строка *}
? wordwrap позволяет разбить длинный текст на строки указанной длины.
В первом параметре указывается количество символов, после которого вставляется символ новой строки (по умолчанию 80 символов). Во вто- ром параметре задается фрагмент, который будет вставлен (по умолча- нию "\n"). Если в третьем параметре указать значение false (значение по умолчанию), то перевод строки будет вставляться между словами, а если true — то будет строго учитываться длина фрагмента. Пример:
$smarty->assign(‘str’, "Очень длинная строка");
…
{$str|wordwrap:5}
{* Выведет: Очень длинная строка
*}
{$str|wordwrap:5:"<br>":true}
{* Выведет: Очень<br>длинн<br>ая<br>строк<br>а *}
Источник: Прохоренок Н. А. HTML, JavaScript, PHP и MySQL. Джентльменский набор Web-мастера. — 3-е изд., перераб. и доп. — СПб.: БХВ-Петербург, 2010. — 912 с.: ил. + Видеокурс (на CD-ROM) — (Профессиональное программирование)
Похожие посты:
- Вывод текста с отступом (0)
- Изменение фонового цвета строки при наведении на нее указателя мыши (0)
- Справочник по встроенным фильтрам add Django (0)
- Красиво отформатированные страницы ошибок в Django (0)
- Обработка сохраняемых фрагментов текста Django (0)
- Интернационализация Django - ЧАСТЬ 1 (0)
- Интернационализация Django - ЧАСТЬ 2 (0)