5. Smarty3:默认的变量调解器

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:'&nbsp'}>
        <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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值