您的位置:首页 > 其它

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: