Модификаторы переменных

Опубликовал: Tuesday, March 20, 2024 в категории HTML | Пока нет комментариев

Внутри шаблона после названия переменной через символ "|" можно указать один или несколько модификаторов. Эти модификаторы позволяют изменить данные перед их вставкой в шаблон. Например, с помощью модификаторов

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) — (Профессиональное программирование)

Похожие посты:

Комментировать

Your email address will not be published. Required fields are marked *