5. Smarty3:默认的变量调解器
2016-03-25 15:59
225 查看
1. 变量调解器的使用方式
变量如果在模版中输出以前需要调解,可以在变量后面跟一个竖线“|”,在后面使用调解的命令(函数插件).而且对于同一变量,可以通过”|”来分隔使用多个调解器。{$var|modifier:"args1":"args2":···}{*使用modifier调解器及参数*} {$var|modifier1|modifier2|modifier3|···}{*使用多个变量调解器*} {$topic|truncate:40:"..."}{*截取变量值的字符串长度为40,并在结尾使用"..."表示省略*}
truncate函数默认截取字符串的长度为80个字符,但可以通过提供的第一个可选参数来改变截取的长度。如上例中截取的长度为40个字符。在Smarty2中只按ASCII码进行截取,并没有考虑双字节和多字节的字符集问题。所以截取中文会出现乱码。但在smarty3中弥补了这个问题,可以正常截取中文字符。
2. Smarty默认提供的变量调解器
成员方法名 | 描述 |
---|---|
capitalize | 将变量里的所有单词首字母大写,参数值boolean型决定带数字的单词是否首字母大写,默认不大写 |
count_characters | 计算变量值里的字符个数,参数值boolean型决定是否计算空格数,默认不计算空格 |
cat | 将cat里的参数值连接到给定的变量后面,默认为空 |
count_paragraphs | 计算变量里的段落数量 |
count_sentences | 计算变量句子里的数量 |
count_words | 计算变量里的次数 |
date_format | 日期格式化,第一个参数控制日期格式,如果传给date_format的数据是空的,将使用第二个参数作为默认时间 |
default | 为空变量设置一个默认值,当变量为空或者未分配时,由给定的默认值替代输出 |
escape | 由html转码,url转码,在没有转码的变量上转换但一号,十六进制转码,十六进制梅花,或者JavaScript转码,默认html转码 |
indent | 在每行缩进字符串,第一个参数指定缩进多少个字符,默认是四个字符;第二个参数,指定缩进用什么字符代替 |
Lower | 将变量字符串小写 |
nl2br | 所有的换行符将被替换成<br/>.功能同PHP中的nl2br函数一样 |
Regex_replace | 寻找和替换正则表达式,必须有两个参数,参数1是替换正则表达式,参数2使用什么文本字符串替换 |
replace | 简单的搜索和替换字符串,必须有两个参数,参数1是将被替换的字符串,参数2是用来替换的文本 |
spacify | 在字符串的每个字符之间插入空格或者其他字符串。参数表示将在两个字符之间插入的字符串,默认为一个空格 |
String_format | 是一种格式化浮点数的方法,如十进制数,使用sprintf语法格式化。参数是必须的,规定使用的格式化方式。%d表示显示整数,%.2f表示截取两个浮点数。用法同PHP函数printf_r一样 |
Strip | 替换所有重复的空格,换行和tab为单个或者指定的字符串。如果有参数则是指定的字符串 |
strip_tags | 去除所有html标签 |
truncate | 从字符串开始处截取某长度的字符,默认为80个 |
upper | 将变量改为大写 |
wordwrap | 可以指定段落的宽度(也就是多少个字符一行,超过这个字符数换行),默认80.第二个参数可选,可以指定在约束点使用什么字符(默认是换行符\n).默认情况下smarty将截取到词尾,如果想精确到指定长度的字符,请将第三个参数设置为ture |
3. 部分实例
testSmarty2.php和对应的模版文件testSmarty2.html<?php /** * Description: 变量调节器示例 * Version: 1.1 * Author: Chang <chriszchang@163.com> * Date: 2016/03/25 * Time: 15:00 */ require_once '../Smarty/Smarty.class.php'; $smarty = new Smarty; $smarty->left_delimiter="<{"; $smarty->right_delimiter="}>"; $smarty->assign('str1',"hello world2 how are you!"); $smarty->assign('str2',"hello world2. \n \n how are you!"); $smarty->assign('str3',"<a href='ww.baidu.com'>百度</a>"); $smarty->assign('articleTitle', 'NJ judge to rule on nude beach. Sun or rain expected today, dark tonight. Statistics show that teen pregnancy drops off significantly after 25.' ); $smarty->assign('nums',1234.7784); $smarty->assign('yesterday',strtotime('-1 day')); $smarty->display('testSmarty2.html');
<html> <head> <title>smarty中的变量调节器</title> </head> <body> <h1>$str1</h1> <{$str1}> <h1>首字母大写</h1> <{$str1|capitalize}> <h1>首字母大写带数字的单词也需要大写</h1> <{$str1|capitalize:true}> <h2>连接字符串</h2> <{$str1|cat:" I am fine"}> <h2>字符计数</h2> <{$str1|count_characters}> <{$str1|count_characters:true}> <h2>计算段落</h2> <{$str2}> <{$str2|count_paragraphs}> <{$str2|count_paragraphs:true}> <h2>计算句数</h2> <{$str2|count_sentences}> <h2>计算词数</h2> <{$str2|count_words}> <h2>格式化日期</h2> <{$smarty.now|date_format}>|| <{$smarty.now|date_format:"%D"}>|| <{$yesterday|date_format:"%Y-%m-%d %H:%M:%S"}> <h2>默认值</h2> <{$smart|default:"没有smart这个变量"}> <h2>escape</h2> <{$str3}> <{$str3|escape}> <h2>缩进</h2> <{$articleTitle}> <{$articleTitle|indent}> <{$articleTitle|indent:10}> <{$articleTitle|indent:1:"\t"}> <h2>小写</h2> <{$str2|lower}> <h2>nl2br</h2> <{$str2|nl2br}> <h2>正则替换</h2> <{$str2}> <{$str2|regex_replace:"/[0-9]/":" This is a number"}> <h2>字符串替换</h2> <{$str2}> <{$str2|replace:'world':'human'}> <h2>插空</h2> <{$str2|spacify:"^_^"}> <h2>字符串格式化</h2> <{$nums}> <{$nums|string_format:"%.2f"}> <h2>去除多余空格</h2> <{$str2}> <{$str2|strip}> <{$str2|strip:' '}> <h2>去除html标签</h2> <{$str3}> <{$str3|strip_tags}> <h2>截取</h2> <{$articleTitle}><br/> <{$articleTitle|truncate}><br/> <{$articleTitle|truncate:30}><br/> <{$articleTitle|truncate:30:""}><br/> <{$articleTitle|truncate:30:"---"}><br/> <{$articleTitle|truncate:30:"":true}><br/> <{$articleTitle|truncate:30:"...":true}><br/> <{$articleTitle|truncate:30:"..":true:true}><br/> <h2>大写</h2> <{$str2|upper}> <h2>行宽约束</h2> <{$str2}><br/> <{$str2|wordwrap}><br/> <{$str2|wordwrap:8}><br/> <{$str2|wordwrap:8:"<br/>"}><br/> <{$str2|wordwrap:8:"<br/>":true}><br/> <h2>组合修改器</h2> <{$articleTitle}><br/> <{$articleTitle|lower|spacify|truncate:20:". . ."}> </body> </html> </body> </html>
相关文章推荐
- 1.5.3
- 2.1.1(extra)
- 第四周项目(5)-递归求奇数积
- 实验一、命令解释程序的编写实验
- C#微信公众平台开发—高级群发接口
- C#比较dynamic和Dictionary性能
- k-Means算法Matlab实现
- ListView里的CheckBox选中后滑动时候选择错位的原因.
- 使用java.nio类库实现的Socket
- 进程间通信--管道
- 海思SDK编译实践 — hi3716cv200es1
- 1.5.1
- 1.5.2(extra)
- [leetcode] 269. Alien Dictionary 解题报告
- 微服务(二)
- 转载 -- iOS数据持久化存储
- JMeter学习(十二)JMeter学习参数化User Defined Variables与User Parameters
- .NET中删除空白字符串的10大方法
- 执行构造的顺序
- jQuery监听文件上传实现进度条效果