在Smarty模板中可以使用变量调解器来修饰变量,和在php中调用函数处理文本相似,只是Smarty中对变量的修饰的语法不同。
变量在模板中输出以前如果需要调解,可以在该变量后面跟一个竖线'|',在后面使用调解的命令,对于同一个变量可以使用多个调解器,它们将从左到右按照设定好的顺序被依次组合使用,使用时必须用'|'字符作为它们之间的分隔符。
语法:{$var|modifier1|modifier2|modifier3|……}
变量调解器由其参数决定其行为,参数由':'分开,有的调解器命令有多个参数。
Smarty中常用的修饰词:
upper:将变量改为大写。
lower:将变量字符串小写。
truncate:从字符串开始处截取某长度的字符,默认是80个。
strip_tags:去除所有的html标签。
strip:替换所有重复的空格,换行和tab为单个或者指定的字符串,如果有参数则是指定的字符串。
string_format:是一种格式化浮点儿数的方法,例如十进制数,使用sprintf语法格式化,参数是必须的,规定使用的格式化方式。%d表示显示整数,%.2f表示截取两个浮点数。
spacify:在字符串的每个字符串之间插入空格或者其他的字符串,参数表示在两个字符串插入的字符串,默认为一个空格。
replace:简单的搜索和替换字符串,必须有两个参数,参数1是将被替换的字符串,参数2是用来替换的文本。
regex_replace:寻找和替换正则表达式,必须有两个参数,参数1是替换正则表达式,参数2是用什么文本字符串来替换。
nl2br:所有的换行符将被替换成<br />,功能和php中的nl2br()函数一样。
indent:在每行缩进字符串,第一个参数指定缩进多少字符,默认是四个字符,第二个参数指定缩进用什么字符代替。
escape:用于html转码,url转码,在没有转码的变量上转换单引号、十六进制转码、十六进制美化,或者javascript转码,默认是html转码。
default:为空变量设置一个默认值,当变量为空或没有分配时,有给定的默认值代替输出。
date_format:日期格式化,第一个参数控制日期格式,如果传给date_format的第一个参数是空的,将使用第二个参数作为默认时间。
%a - 星期几的简写
%A - 星期几的全写
%b - 月份的简写
%B - 月份的全写
%c - 日期时间06/12/05 11:15:10
%C - 世纪时间
%d - 一个月的第几号(从 01 到 31)
%D - 同 %m/%d/%y
%e - 一个月的第几号,号为单数则前面加一空格 (从 1 到 31)
%g - 世纪
%G - 世纪 [0000,9999]
%h - 同%b
%H - 24小时形式的小时(从00到23)
%I - 12小时形式的小时(从01到 12)
%j - 一年中的第几天(从 001 到 366)
%k - 24小时形式的小时,单数字前面加空格. (从 0 到 23)
%l - 12小时形式的小时,单数字前面加空格.(range 1 to 12)
%m - 月份 (range 01 to 12)
%M - 分
%n - 换行符
%p - 显示早上还是下午`am' 或 `pm'
%r - a.m. 或 p.m.形式的时间
%R - 24小时形式的时间
%S - 秒
%t - tab符号
%T - 同%H:%M:%S
%u - 用 [1,7],表示星期几
%U - 计算是该年的第几个星期,从该年的第一个星期天开始计算
%V - 计算是该年的第几个星期, 从 01 到 53, 第一个星期必须至少有4天在这一年, 星期天作为这个星期的第一天
%w - 用数字的形式表示是星期的第几天, 星期天 为 0
%W - 用数字的形式是该年的第几个星期,从该年的第一个星期一开始计算
%x - 显示日期:月/日/年
%X - 显示时间:小时:分钟:秒
%y - 不包括世纪的年份
%Y - 包括世纪的年份
%Z - 时区
%% - 输出%
其中有些有时不能正常输出。
count_words:计算变量里的词数,经测试统计的是用空格(' ')分隔开的词数。
count_sentences:计算变量里的句子数,经测试统计的是用英文状态下的点和空格('. ')分隔开的句子数。
count_paragraphs:计算变量里的段落数。
cat:将cat里的参数连接到给定的变量后面,默认为空。
count_characters:计算变量里的字符数,参数boolean(true:计算 false:不计算)决定是否计算空格,默认不计算空格。
capitalize:将变量里的所有首字母大写,参数boolean(true:大写 false:不大写)决定带数字的单词是否首字母大写,默认不大写。
wordwrap:指定段落的宽度(也就是多少个字符一行,超过这个字符数换行),默认是80,第二个参数可选,可以指定在约束点使用什么字符(默认是换行符\n),默认情况下smarty将截取到词尾,如果想精确到设定长度的字符,请将第三个参数设为true。