Smarty入门 变量调节器

之前学习了Smarty的基本用法和基本的变量传递。
接下来学习一下Smarty的变量调节器。

变量调节器就是将变量调整成自己需要的形式。
这里的变量可以是字符串、变量和自建函数。

基本形式

变量调节器的一般形式为:

{$yesterday|date_format:"%A, %B %e, %Y"}

{变量|调节器名:参数1:参数2}

前边视要调节的变量,“|”后接着调节器名,后边为参数,参数使用“:”分割。

参数部分视具体情况而定。

组合调节器

对于同一个变量,可以使用多个修改器。它们将从左到右按照设定好的顺序被依次组合使用。使用时必须要用”|”字符作为它们之间的分隔符。

例如:

{*$text = "I Love"*}
{$text|cat:" Smarty"|upper}

{*输出为:I LOVE SMARTY*}

调节器汇总

调节器作用参数
default默认值1
escape转码1
cat将给定字符串连接到变量的后边1
indent缩进2
nl2br将换行符替换成<br/>0
string_format字符串格式化1
date_format格式化时间和日期2
capitalize将变量里的所有单词首字大写0
upper将变量改为大写0
lower将变量改为小写0
count_characters计算字符长度1
count_words计算变量里的词数0
count_sentences计算变量里句子的数量0
count_paragraphs计算变量里的段落数量0
strip_tags去除html标签0
truncate截取3
replace搜索并替换字符串2
regex_replace寻找和替换正则表达式2
wordwrap行宽约束3
strip用字符替换重复空格,换行和制表符1
spacify字符之间插入字符(串)1

详解

default

默认值。

index.php


$smarty = new Smarty;
$smarty->assign('text4', "12345");
$smarty->assign('text5', "");
$smarty->display('index.tpl');

index.tpl

{$text4}<br/>
{$text5|default:"12345"}<br/>

输出:

12345
12345

escape

用于html转码,url转码,在没有转码的变量上转换单引号,十六进制转码,十六进制美化,或者javascript转码。默认是html转码。

转码前HTML标签浏览器可以识别,转码后直接打印。

参数:

位置类型必须默认值作用
1stringNOhtml编码格式

index.php


$smarty = new Smarty;
$smarty->assign('text6', "<p>123456</p>");
$smarty->display('index.tpl');

index.tpl

{$text6}<br/>
{$text5|escape}<br/>
{$text5|escape:"html"}<br/>
{$text5|escape:"javascript"}<br/>

输出:

123456
<p>123456</p>
<p>123456</p>
123456<\/p>

cat

将给定字符串连接到变量的后边。

参数:

位置类型必须默认值作用
1stringNO给定的字符串

index.php


$smarty = new Smarty;
$smarty->assign('title', 'I love smarty');
$smarty->display('index.tpl');

index.tpl

{$title|cat}<br/>
{$title|cat:"!!"}

输出:

I love smarty
I love smarty!!

indent

缩进。

参数:

位置类型必须默认值作用
1stringNO4缩进多少个字符
2stringNO空格代替缩进字符

index.php


$smarty = new Smarty;
$smarty->assign('text7', "098765");
$smarty->display('index.tpl');

index.tpl

{$text7}<br/>
{$text7|indent}<br/>
{$text7|indent:"8"}<br/>
{$text7|indent:"8":"\t"}<br/>

输出:

123456
<p>123456</p>
<p>123456</p>
123456<\/p>

注意:

因为HTML会把连续的空格转化成一个空格,所以在浏览器上可能不明显。可以右键查看源代码来查看。


nl2br

将换行符替换成<br/>,功能同PHP中的nl2br()函数一样。

index.php


$smarty = new Smarty;
$smarty->assign('text8', "123456\n7890");
$smarty->display('index.tpl');

index.tpl

{$text8}<br/>
{$text8|nl2br}<br/>

输出:

123456 7890
123456
7890

注意:

里的\n需要放在双引号”“之间,单引号不识别转义符号。


string_format

字符串格式化。(十进制、浮点型)

参数:

位置类型必须默认值作用
1stringYes-使用的格式化方式

index.php


$smarty = new Smarty;
$smarty->assign('text9', "23.5787446");
$smarty->display('index.tpl');

index.tpl

{$text9}<br/>
{$text9|string_format:"%.2f"}<br/>
{$text9|string_format:"%d"}<br/>

输出:

23.5787446
23.58
23

date_format

格式化从函数strftime()获得的时间和日期。

参数:

位置类型必须默认值作用
1stringNO%b %e, %Y输出日期的格式
2stringNO输入为空时的值(linux时间戳)

index.php


$smarty = new Smarty;
$smarty->assign('time', strtotime('-1 day'));
$smarty->assign('time1', "");
$smarty->display('index.tpl');

index.tpl

{$time}<br/>
{$time|date_format}<br/>
{$time|date_format:"%A, %b %d, %Y"}<br/>
{$time1|date_format:"%A, %b %d, %Y":"1485841461"}<br/>

输出:

1485841709
Jan 31, 2017
Tuesday, Jan 31, 2017
Tuesday, Jan 31, 2017

日期转换格式:

--
%a星期缩写
%A星期全称
%b(%h)月份缩写
%B月份全称
%d(%m/%d/%y)日期1~31
%e日期1~31(仅一位加空格)
%H小时0~23
%I小时1~12
%j一年中的第几天
%m月份1~12
%M分钟
%S
%T相当于%H:%M:%S
%w星期几0~6(Sunday being 0)

capitalize

capitalize:将变量里的所有单词首字大写。

index.php


$smarty = new Smarty;
$smarty->assign('title', 'I love smarty');
$smarty->display('index.tpl');

index.tpl

{$title}<br/>
{$title|capitalize}

输出:

I love smarty
I Love Smarty

upper

将变量改为大写。

index.php


$smarty = new Smarty;
$smarty->assign('title', 'I love smarty');
$smarty->display('index.tpl');

index.tpl

{$title}<br/>
{$title|upper}

输出:

I Love Smarty
I LOVE SMARTY

lower

将变量小写。

index.php


$smarty = new Smarty;
$smarty->assign('title', 'I love smarty');
$smarty->display('index.tpl');

index.tpl

{$title}<br/>
{$title|lower}

输出:

I love smarty
i love smarty

count_characters

计算字符串长度。

参数:

位置类型必须默认值作用
1booleanNOfalse是否计算空格

index.php


$smarty = new Smarty;
$smarty->assign('title', 'I love smarty');
$smarty->display('index.tpl');

index.tpl

{$title|count_characters}<br/>
{$title|count_characters:true}

输出:

11
13

count_words

计算变量里的词数。

index.php


$smarty = new Smarty;
$smarty->assign('title', 'I love smarty');
$smarty->display('index.tpl');

index.tpl

{$title}<br/>
{$title|count_words}

输出:

I love smarty
3

注意:不适用于中文。


count_sentences

计算变量里句子的数量。

index.php


$smarty = new Smarty;
$smarty->assign('text1', "I love smarty.I love PHP.");
$smarty->assign('text2', "I love smarty. I love PHP.");
$smarty->assign('text3', "I love smarty。 I love PHP.");
$smarty->display('index.tpl');

index.tpl

{$text1}<br/>
{$text1|count_sentences}<br/>
{$text2}<br/>
{$text2|count_sentences}<br/>
{$text3}<br/>
{$text3|count_sentences}<br/>

输出:

I love smarty.I love PHP.
1
I love smarty. I love PHP.
2
I love smarty。 I love PHP.
1

注意:
1.需要在句子终止符号后边添加一个符号(例如空格)才能被识别为句子结束。
2.不识别中文的”。”、”!”等符号。


count_paragraphs

计算变量里的段落数量。

index.php


$smarty = new Smarty;
$smarty->assign('text', "I love smarty.\nI love PHP.");
$smarty->display('index.tpl');

index.tpl

{$text}<br/>
{$text|count_paragraphs}<br/>

输出:

I love smarty.
I love PHP.
2

注意:

在浏览器中,看到的结果为.

I love smarty. I love PHP.
2

不显示换行而显示空格,原因是HTMl不识别’\n’、’\t’等转义字符。
这些叫做whitespace,浏览器会将它们显示为空格。


strip_tags

去除html标签,去除<和>标签,包括在<和>之间的任何内容.

index.php


$smarty = new Smarty;
$smarty->assign('text6', "<p>123456</p>");
$smarty->display('index.tpl');

index.tpl

{$text6}<br/>
{$text|strip_tags}<br/>

输出(源代码):

<p>123456</p>
123456 

truncate

截取。

参数:

位置类型必须默认值作用
1integerNo80截取字符的数量
2stringNo截取后追加在截取词后面的字符串
3booleanNofalse是截取到词的边界(假)还是精确到字符(真)

index.php


$smarty = new Smarty;
$smarty->assign('text10', "abcdefgh");
$smarty->display('index.tpl');

index.tpl

{$text10}<br/>
{$text10|truncate}<br/>
{$text10|truncate:2}<br/>
{$text10|truncate:2:""}<br/>
{$text10|truncate:2:"_"}<br/>
{$text10|truncate:2:"_":true}<br/>

输出:

abcdefgh
abcdefgh
...
ab
a_
a_

replace

搜索并替换字符串

参数:

位置类型必须默认值作用
1stringYes-要搜索的字符串
2stringYes-进行替换的字符串

index.php


$smarty = new Smarty;
$smarty->assign('title', "I love smarty");
$smarty->display('index.tpl');

index.tpl

{$title}<br/>
{$title|replace:"smarty":"PHP"}<br/>

输出:

I love smarty
I love PHP

regex_replace

寻找和替换正则表达式。

参数:

位置类型必须默认值作用
1stringYes-正则表达式
2stringYes-进行替换的字符串

index.php


$smarty = new Smarty;
$smarty->assign('title', "I love smarty");
$smarty->display('index.tpl');

index.tpl

{$title}<br/>
{$title|regex_replace:"/.(ov)/":"123"}<br/>

输出:

I love smarty
I 123e smarty

wordwrap

行宽约束,指定段落的宽度(也就是多少个字符一行,超过这个字符数换行).默认80.

参数:

位置类型必须默认值作用
1integerNo80指定段落(句子)的宽度
1stringNo\n使用什么字符约束
1booleanNofalse是约束到词的边界(假)还是精确到字符(真)

index.php


$smarty = new Smarty;
$smarty->assign('text11', 'abcdefghijklmnopqrstuvwxyz');
$smarty->display('index.tpl');

index.tpl

{$text11}<br/>
{$text11|wordwrap:"10"}
{$text11|wordwrap:"10":"<br/>"}
{$text11|wordwrap:"10":"<br/>":true}

输出:

abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghij
klmnopqrsta
uvwxyz

strip

用一个空格或一个给定字符替换所有重复空格,换行和制表符.

参数:

位置类型必须默认值作用
1stringNo用于替换的字符

index.php


$smarty = new Smarty;
$smarty->assign('text', "I love smarty.\nI love PHP.");
$smarty->display('index.tpl');

index.tpl

{$text}<br/>
{$text|strip}<br/>
{$text|strip:"_"}<br/>

输出:

I love smarty.
I love PHP.
I love smarty. I love PHP.
I_love_smarty._I_love_PHP.

spacify

插空,在字符串的每个字符之间插入空格或者其他的字符(串)。

参数:

位置类型必须默认值作用
1stringNO-要插入的字符串

index.php


$smarty = new Smarty;
$smarty->assign('text4', "12345");
$smarty->display('index.tpl');

index.tpl

{$text4}<br/>
{$text4|spacify:"_"}<br/>

输出:

12345
1_2_3_4_5
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值