变量调节器作用于变量、自定义函数或字符串。变量调节器的用法是:‘|’符号右接调节器名称。变量调节器可接收附加参数影响其行为。参数位于调节器右边,并用‘:’符号分开。
调节器的例子:
{* Uppercase the title *}
<h2>{$title|upper}</h2>
{* Truncate the topic to 40 characters use ... at the end *}
Topic: {$topic|truncate:40:"..."}
{* format a literal string *}
{"now"|date_format:"%Y/%m/%d"}
{* apply modifier to a custom function *}
{mailto|upper address="me@domain.dom"}
如果你给数组变量应用单值变量的调节,结果是数组的每个值都被调节。 如果你只想要调节器用一个值调节整个数组,你必须在调节器名字前加上@符号。 例如: {$articleTitle|@count}(这将会在 $articleTitle 数组里输出元素的数目)
Smarty中有如下一些变量调节器以及作用:
- 首字母大写capitalize 参数为bool值,为true带数字的单词也大写,为false带数字的 示例:{$title|capitalize}
- 字符串连接cat 示例:{$title|cat:"content."}
- 日期格式化date_format(Unix时间戳格式) 示例:{$yesterday|date_format} {$yesterday|date_format:":"%A, %B %e, %Y %H:%M:%S"}
- 为未赋值或为空的变量指定默认值default 示例:{$title|default:"no title"}
- 转码escape(相反的unescape) 用于html转码,url转码,在没有转码的变量上转换单引号,十六进制转码,十六进制美化,或者JavaScript转码。默认是html转码。
- 小写lower 大写upper 将变量字符串小(大)写 示例:{$title|lower} {$title|upper}
- 所有的换行符将被替换成<br />, nl2br功能同PHP中的nl2br()函数一样。
- count_characters 计算变量内容里有多少个字符 参数为bool值,为true计算空格,为false不计算空格
- count_paragraphs 计算变量内容里有多少个段落
- count_sentence 计算变量里句子的数量
- count_words 计算变量里的词数
- indent 缩进每一行的字符串,默认是缩进4个空格。可选的参数可以设置缩进的空格数量。可选的第二个参数设置缩进使用的字符,如用
"\t"
来代替空格缩进 - regex_replace 使用正则表达式在变量中搜索和替换,语法来自Php的preg_replace()函数
参数顺序 类型 必选参数 默认值 说明 1 string Yes n/a 正则表达式 2 string Yes n/a 替换的字符 - replace 一种在变量中进行简单的搜索和替换字符串的处理。等同于php的str_replace()函数
参数顺序 类型 必选参数 默认值 说明 1 string Yes n/a 需要搜索并替换的字符 2 string Yes n/a 替换用的字符 - spacify 插空是一种在变量的字符串的每个字符之间插入空格或者其他的字符(串)的方法。
参数顺序 类型 必选参数 默认值 说明 1 string No one space 插入字符间的字符 - string_format 一种格式化字符串的方法,例如格式化为十进制数等等。实际运用的是php的sprintf()函数
参数顺序 类型 必选参数 默认值 说明 1 string Yes n/a 指定哪种格式 (sprintf) - strip 用一个空格或一个给定字符替换所有重复空格、换行和制表符。(如果你希望转换模板文字内的空格,使用内置的
{strip}函数。)
- strip_tags 去除<和>标签,包括在<和>之间的全部内容。
参数顺序 类型 必选参数 默认值 说明 1 bool No TRUE
设置是否将标签替换成' ' 或者 '' - truncate 从字符串开始处截取某长度的字符,默认是80个,你也可以指定第二个参数作为追加在截取字符串后面的文本串。该追加字串被计算在截取长度中。默认情况下,smarty会截取到一个词的末尾。如果你想要精确的截取多少个字符,把第三个参数改为"true" 。
参数顺序 类型 必选参数 默认值 说明 1 integer No 80 截取的长度 2 string No ... 截取后替代显示的字符,该字符长度会被计算到截取长度内。 3 boolean No FALSE
是否按单词截取 FALSE
,或是按字符截取TRUE
。4 boolean No FALSE
当字符截取的长度刚好等于字符本身长度时,是否截取。 FALSE
也会截取。TRUE
是不会截取。 注意如果设置为TRUE
,单词的边界会被忽略。 - wordwrap 可以指定段落的列宽(也就是一行多少个字符,超过这个字符数换行),默认80。第二个参数可选,指定在约束点使用什么换行符,默认为"\n"。默认情况下smarty将截取到词尾,如果想精确到设定长度的字符,请将第三个参数设为ture。本调节器等同于php的wordwrap()函数。
参数顺序 类型 必选参数 默认值 说明 1 integer No 80 限定一行的长度。 2 string No \n 换行符号 3 boolean No FALSE
设置按单词换行( FALSE
),或者按字符换行(TRUE
)。 to_charset to_charset
可将变量值由当前内置字符集转换到指定字符集。 它是from_charset修饰器的相反操作。参数顺序 类型 必选参数 允许取值 默认值 说明 1 string No ISO-8859-1
,UTF-8
或者任何mb_convert_encoding()
函数允许的字符集名。ISO-8859-1
转换到的字符集类型。