Smarty中常用变量操作符汇总


Posted in PHP onOctober 27, 2014

本文汇总了Smarty中常用变量操作符,分享给大家供大家参考。具体如下:

php模板引擎smarty的变量操作符可用于操作变量,自定义函数和字符。
语法中使用"|"应用变量操作符,多个参数用":"??指簟?/DIV>

capitalize[首字母大写]
count_characters[计算字符数]
cat[连接字符串]
count_paragraphs[计算段落数]
count_sentences[计算句数]
count_words[计算词数]
date_format[时间格式]
default[默认]
escape[转码]
indent[缩进]
lower[小写 ]
nl2br[换行符替换成<br />]
regex_replace[正则替换]
replace[替换]
spacify[插空]
string_format[字符串格式化]
strip[去除(多余空格)]
strip_tags[去除html标签]
truncate[截取]
upper[大写]
wordwrap[行宽约束]
组合使用多个操作符

实例如下:

{* 标题大写 *}

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

{* 取其前40个字符 *}

Topic: {$topic|truncate:40:"..."}

{* 格式化文字串 *}

{"now"|date_format:"%Y/%m/%d"}

{* 在自定义函数里应用调节器 *}

{mailto|upper address="main@cn-web.com"}

capitalize(首字母大写)

index.php页面如下:

$smarty = new Smarty;

$smarty->assign('articleTitle', 'Police begin campaign to rundown jaywalkers.');

$smarty->display('index.tpl');

index.tpl页面如下:

{$articleTitle}

{$articleTitle|capitalize}

OUTPUT输出如下:

Police begin campaign to rundown jaywalkers.

Police Begin Campaign To Rundown Jaywalkers.

count_characters(计算变量里的字符数)

index.php如下:

$smarty = new Smarty;

$smarty->assign('articleTitle', 'Cold Wave Linked to Temperatures.');

$smarty->display('index.tpl');

index.tpl页面如下:

{$articleTitle}

{$articleTitle|count_characters}

OUTPUT输出如下:

Cold Wave Linked to Temperatures.

cat(连接字符串)
将cat里的值连接到给定的变量后面
index.php如下:

$smarty = new Smarty;

$smarty->assign('articleTitle', 'Psychics predict world didn't end');

$smarty->display('index.tpl');

index.tpl页面如下:

{$articleTitle|cat:" yesterday."}

OUTPUT输出如下:

Psychics predict world didn't end yesterday.

count_paragraphs(计算段数)
计算变量里的段落数量
index.php如下:

$smarty = new Smarty;

$smarty->assign('articleTitle', 'War Dims Hope for Peace. Child's Death Ruins Couple's Holiday.');

$smarty->display('index.tpl');

index.tpl模板页面如下:

{$articleTitle}

{$articleTitle|count_paragraphs}

OUTPUT输出如下:

War Dims Hope for Peace. Child's Death Ruins Couple's Holiday.
Man is Fatally Slain. Death Causes Loneliness, Feeling of Isolation.

2

count_sentences(计算句数)
计算变量里句子的数量
index.php如下:

$smarty = new Smarty;

$smarty->assign('articleTitle', 'Two Soviet Ships Collide - One Dies. Enraged Cow Injures Farmer with Axe.');

$smarty->display('index.tpl');

index.tpl模板如下:

{$articleTitle}

{$articleTitle|count_sentences}

OUTPUT输出如下:

Two Soviet Ships Collide - One Dies. Enraged Cow Injures Farmer with Axe.

2

count_words(计算词数)
计算变量里的词数
index.php如下:
$smarty = new Smarty;

$smarty->assign('articleTitle', 'Dealers Will Hear Car Talk at Noon.');

$smarty->display('index.tpl');

index.tpl模板如下:

{$articleTitle}

{$articleTitle|count_words}

OUTPUT输出如下:

Dealers Will Hear Car Talk at Noon.

7

date_format(日期格式)
Parameter Position
参数位置 Type Required Default Description
1 string No %b %e, %Y This is the format for the outputted date.
输出字串的格式
2 string No n/a This is the default date if the input is empty.
输入为空时的默认设置
在给定的函数serftime();里格式日期和时间.
Unix或者mysql等的时间戳(parsable by strtotime)都可以传递到smarty.
设计者可以使用date_format完全控制日期格式.
如果传给date_format的数据是空的,将使用第二个参数作为时间格式
index.php如下:
$smarty = new Smarty;

$smarty->assign('yesterday', strtotime('-1 day'));

$smarty->display('index.tpl');

index.tpl:

{$smarty.now|date_format}

{$smarty.now|date_format:"%A, %B %e, %Y"}

{$smarty.now|date_format:"%H:%M:%S"}

{$yesterday|date_format}

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

{$yesterday|date_format:"%H:%M:%S"}

OUTPUT输出如下:

Feb 6, 2001

Tuesday, February 6, 2001

14:33:00

Feb 5, 2001

Monday, February 5, 2001

14:33:00

default(默认)

Parameter Position Type Required Default Description 

1 string No empty This is the default value to output if the variable is empty.

这是变量为空的时候的默认输出
为空变量设置一个默认值.
当变量为空或者未分配的时候,将由给定的默认值替代输出.
index.php如下:
$smarty = new Smarty;

$smarty->assign('articleTitle', 'Dealers Will Hear Car Talk at Noon.');

$smarty->display('index.tpl');

index.tpl模板:

{$articleTitle|default:"no title"}

{$myTitle|default:"no title"}

OUTPUT输出:

Dealers Will Hear Car Talk at Noon.

no title

escape(转码)
Parameter Position Type Required Possible Values Default Description
1 string No html,htmlall,url,quotes,hex,hexentity,javascript html This is the escape format to use.
用于html转码,url转码,在没有转码的变量上转换单引号,十六进制转码,十六进制美化,或者javascript转码.
默认是html转码
index.php如下:
 
$smarty = new Smarty;

$smarty->assign('articleTitle', "'Stiff Opposition Expected to Casketless Funeral Plan'");

$smarty->display('index.tpl');

 
index.tpl模板:
 
{$articleTitle}

{$articleTitle|escape}

{$articleTitle|escape:"html"} {* escapes & " ' < > *}

{$articleTitle|escape:"htmlall"} {* escapes ALL html entities *}

{$articleTitle|escape:"url"}

{$articleTitle|escape:"quotes"}

<a

href="{$EmailAddress|escape:"hexentity"}mailto:{$EmailAddress|escape:"hex"}">{$EmailAddress|escape:"hexentity"}</a>

 
OUTPUT输出:
 
'Stiff Opposition Expected to Casketless Funeral Plan'

'Stiff%20Opposition%20Expected%20to%20Casketless%20Funeral%20Plan'

'Stiff%20Opposition%20Expected%20to%20Casketless%20Funeral%20Plan'

'Stiff%20Opposition%20Expected%20to%20Casketless%20Funeral%20Plan'

'Stiff+Opposition+Expected+to+Casketless+Funeral+Plan'

'Stiff Opposition Expected to Casketless Funeral Plan'

<a

href="bob@me.netmailto:%62%6f%62%40%6d%65%2e%6e%65%74">bob@me.net</a>

indent(缩进)
Parameter Position Type Required Default Description
1 integer No 4 This determines how many characters to indent to.
2 string No (one space) This is the character used to indent with.
在每行缩进字符串,默认是4个字符(pear标准也是).
作为可选参数,你可以指定缩进字符数.
作为第二个可选参数,你可以指定缩进用什么字符代替
index.php如下:
 
$smarty = new Smarty;

$smarty->assign('articleTitle', 'NJ judge to rule on nude beach.');

$smarty->display('index.tpl');

 
index.tpl模板:
 
{$articleTitle}

 

{$articleTitle|indent}

 

{$articleTitle|indent:10}

 

{$articleTitle|indent:1:"t"}

 
OUTPUT输出:
 
NJ judge to rule on nude beach.

Sun or rain expected today, dark tonight.

Statistics show that teen pregnancy drops off significantly after 25.

 

NJ judge to rule on nude beach.

Sun or rain expected today, dark tonight.

Statistics show that teen pregnancy drops off significantly after 25.

NJ judge to rule on nude beach.

Sun or rain expected today, dark tonight.

Statistics show that teen pregnancy drops off significantly after 25.

 

NJ judge to rule on nude beach.

Sun or rain expected today, dark tonight.

Statistics show that teen pregnancy drops off significantly after 25.

lower(小写)
将变量字符串小写
index.php如下:

$smarty = new Smarty;

$smarty->assign('articleTitle', 'Two Convicts Evade Noose, Jury Hung.');

$smarty->display('index.tpl');

index.tpl模板:
{$articleTitle}

{$articleTitle|lower}

OUTPUT输出:
Two Convicts Evade Noose, Jury Hung.

two convicts evade noose, jury hung.

nl2br(换行符替换成<br /> )
所有的换行符将被替换成 <br />.同php的nl2br()函数一样.
index.php如下:

$smarty = new Smarty;

$smarty->assign('articleTitle', "Sun or rain expectedntoday, dark tonight");

$smarty->display('index.tpl');

index.tpl模板:
{$articleTitle|nl2br}

OUTPUT输出:
Sun or rain expected<br />today, dark tonight

regex_replace(正则替换)
寻找和替换正则表达式 .
Parameter Position Type Required Default Description
1 string Yes n/a This is the regular expression to be replaced.
替换正则表达式.

2 string Yes n/a This is the string of text to replace with.
使用什么文本字串来替换
index.php如下:

$smarty = new Smarty;

$smarty->assign('articleTitle', "Infertility unlikely tonbe passed on, experts say.");

$smarty->display('index.tpl');

index.tpl模板:
{* replace each carriage return, tab & new line with a space *}{* 使用空格替换每个回车,tab,和换行符 *}

{$articleTitle}

{$articleTitle|regex_replace:"/[rtn]/":" "}

OUTPUT输出:
Infertility unlikely to

be passed on, experts say.

Infertility unlikely to be passed on, experts say.

replace(替换)
简单的搜索和替换字符串
Parameter Position Type Required Default Description
1 string Yes n/a This is the string of text to be replaced.
将被替换的字符串
2 string Yes n/a This is the string of text to replace with.
用来替换的文本
index.php如下:

$smarty = new Smarty;

$smarty->assign('articleTitle', "Child's Stool Great for Use in Garden.");

$smarty->display('index.tpl');

index.tpl模板:
{$articleTitle}

{$articleTitle|replace:"Garden":"Vineyard"}

{$articleTitle|replace:" ":" "}

OUTPUT输出:
Child's Stool Great for Use in Garden.

Child's Stool Great for Use in Vineyard.

Child's Stool Great for Use in Garden.

spacify
是一种在字符串的每个字符之间插入空格或者插入其他的字符(串).
index.php如下:
$smarty = new Smarty;

$smarty->assign('articleTitle', 'Something Went Wrong in Jet Crash, Experts Say.');

$smarty->display('index.tpl');

index.tpl模板:
{$articleTitle}

{$articleTitle|spacify}

{$articleTitle|spacify:"^^"}

OUTPUT输出:
Something Went Wrong in Jet Crash, Experts Say.

S o m e t h i n g W e n t W r o n g i n J e t C r a s h , E x p e r t s S a y .

S^^o^^m^^e^^t^^h^^i^^n^^g^^ ^^W^^e^^n^^t^^ ^^W^^r^^o^^n^^g^^ ^^i^^n^^ ^^J^^e^^t^^ ^^C^^r^^a^^s^^h^^,^^ ^^E^^x^^p^^e^^r^^t^^s^^ ^^S^^a^^y^^.

string_format(字符串格式化)
Parameter Position Type Required Default Description
1 string Yes n/a This is what format to use. (sprintf)
使用的格式化方式
是一种格式化浮点数的方法.例如十进制数.使用sprintf语法格式化
index.php如下:

$smarty = new Smarty;

$smarty->assign('number', 23.5787446);

$smarty->display('index.tpl');

index.tpl模板:
{$number}

{$number|string_format:"%.2f"}

{$number|string_format:"%d"}

OUTPUT输出:
23.5787446

23.58

24

strip(去除(多余空格)
替换所有重复的空格,换行和tab为单个.
index.php如下:

$smarty = new Smarty;

$smarty->assign('articleTitle', "Grandmother ofneight makest hole in one.");

$smarty->display('index.tpl');

index.tpl模板:
{$articleTitle}

{$articleTitle|strip}

{$articleTitle|strip:" "}

OUTPUT输出:
Grandmother of

eight makes hole in one.

Grandmother of eight makes hole in one.

Grandmother of eight makes hole in one.

strip_tags(去除html标签)
去除在<和>之间的所有标签,包括<和>.
index.php如下:

$smarty = new Smarty;

$smarty->assign('articleTitle', "Blind Woman Gets <font face="helvetica">New Kidney</font> from Dad she Hasn't Seen in <b>years</b>.");

$smarty->display('index.tpl');

index.tpl模板:
{$articleTitle}

{$articleTitle|strip_tags}

OUTPUT输出:
Blind Woman Gets <font face="helvetica">New Kidney</font> from Dad she Hasn't Seen in <b>years</b>.

Blind Woman Gets New Kidney from Dad she Hasn't Seen in years.

truncate(截取)
Parameter Position Type Required Default Description
1 integer No 80 This determines how many characters to truncate to.
指定截取多少字符
2 string No ... This is the text to append if truncation occurs.
截取后加在截取词后的字符串
3 boolean No false This determines whether or not to truncate at a word boundary (false), or at the exact character (true).
检查是否截取到词的边界
截取字符串开始的一段.默认是80个.
你可以指定第二个参数作为在截取的那段字符串后加上什么字符.
默认情况下,smarty会截取到一个词的末尾,
如果你想要精确的截取多少个字符,把第三个参数改为"true"
index.php如下:
$smarty = new Smarty;

$smarty->assign('articleTitle', 'Two Sisters Reunite after Eighteen Years at Checkout Counter.');

$smarty->display('index.tpl');

index.tpl模板:
{$articleTitle}

{$articleTitle|truncate}

{$articleTitle|truncate:30}

{$articleTitle|truncate:30:""}

{$articleTitle|truncate:30:"---"}

{$articleTitle|truncate:30:"":true}

{$articleTitle|truncate:30:"...":true}

OUTPUT输出:
Two Sisters Reunite after Eighteen Years at Checkout Counter.

Two Sisters Reunite after Eighteen Years at Checkout Counter.

Two Sisters Reunite after...

Two Sisters Reunite after

Two Sisters Reunite after---

Two Sisters Reunite after Eigh

Two Sisters Reunite after E...

upper(大写 )
将变量改为大写
index.php如下:

$smarty = new Smarty;

$smarty->assign('articleTitle', "If Strike isn't Settled Quickly it may Last a While.");

$smarty->display('index.tpl');

index.tpl模板:
{$articleTitle}

{$articleTitle|upper}

OUTPUT输出:
If Strike isn't Settled Quickly it may Last a While.

IF STRIKE ISN'T SETTLED QUICKLY IT MAY LAST A WHILE.

wordwrap(行宽约束)
可以指定段落的宽度(也就是多少个字符一行,超过这个字符数换行).默认80.
第二个参数可选,可以指定在约束点使用什么字符(默认是换行符n).
默认情况下smarty将截取到词尾,你也可以指定精确截取多少个字符
Parameter Position Type Required Default Description
1 integer No 80 This determines how many columns to wrap to.
指 定段落(句子)的宽度
2 string No n This is the string used to wrap words with.
使用什么字符约束
3 boolean No false This determines whether or not to wrap at a word boundary (false), or at the exact character (true).
是否精确约束到字符
index.php如下:

$smarty = new Smarty;

$smarty->assign('articleTitle', "Blind woman gets new kidney from dad she hasn't seen in years.");

$smarty->display('index.tpl');

index.tpl模板:
{$articleTitle}

{$articleTitle|wordwrap:30}

{$articleTitle|wordwrap:20}

{$articleTitle|wordwrap:30:"<br>n"}

{$articleTitle|wordwrap:30:"n":true}

OUTPUT输出:
Blind woman gets new kidney from dad she hasn't seen in years.

Blind woman gets new kidney

from dad she hasn't seen in

years.

Blind woman gets new

kidney from dad she

hasn't seen in

years.

Blind woman gets new kidney<br>

from dad she hasn't seen in years.

Blind woman gets new kidney fr

om dad she hasn't seen in year

s.

组合使用多个操作符
可以在一个变量上应用操作符,它们将从左到右依次组合应用.多个操作符必须用"|"符号分开.
index.php页面如下:
$smarty = new Smarty;

$smarty->assign('articleTitle', 'Smokers are Productive, but Death Cuts Efficiency.');

$smarty->display('index.tpl');

index.tpl模板:

{$articleTitle}

{$articleTitle|upper|spacify}

{$articleTitle|lower|spacify|truncate}

{$articleTitle|lower|truncate:30|spacify}

{$articleTitle|lower|spacify|truncate:30:". . ."}

OUTPUT输出:

Smokers are Productive, but Death Cuts Efficiency.

S M O K E R S A R E P R O D U C T I V E , B U T D E A T H C U T S E F F I C I E N C Y .

s m o k e r s a r e p r o d u c t i v e , b u t d e a t h c u t s...

s m o k e r s a r e p r o d u c t i v e , b u t . . .

s m o k e r s a r e p. . .

希望本文所述对大家的PHP程序设计有所帮助。

PHP 相关文章推荐
WML,Apache,和 PHP 的介绍
Oct 09 PHP
MySql中正则表达式的使用方法描述
Jul 30 PHP
解析数组非数字键名引号的必要性
Aug 09 PHP
php获取从百度搜索进入网站的关键词的详细代码
Jan 08 PHP
PHP中的use关键字概述
Jul 23 PHP
PHP实现恶意DDOS攻击避免带宽占用问题方法
May 27 PHP
PHP测试成功的邮件发送案例
Oct 26 PHP
PHP转换文本框内容为HTML格式的方法
Jul 20 PHP
ThinkPHP打水印及设置水印位置的方法
Oct 14 PHP
thinkphp3.2中实现phpexcel导出带生成图片示例
Feb 14 PHP
PHP编译configure时常见错误的总结
Aug 17 PHP
php中pcntl_fork创建子进程的方法实例
Mar 14 PHP
Smarty中调用FCKeditor的方法
Oct 27 #PHP
smarty简单分页的实现方法
Oct 27 #PHP
smarty半小时快速上手入门教程
Oct 27 #PHP
php命令行用法入门实例教程
Oct 27 #PHP
php基于mcrypt的加密解密实例
Oct 27 #PHP
CI框架学习笔记(二) -入口文件index.php
Oct 27 #PHP
PHP改进计算字符串相似度的函数similar_text()、levenshtein()
Oct 27 #PHP
You might like
PHP的宝库目录--PEAR
2006/10/09 PHP
不用GD库生成当前时间的PNG格式图象的程序
2006/10/09 PHP
Discuz!5的PHP代码高亮显示插件(黑暗中的舞者更新)
2007/01/29 PHP
php 传值赋值与引用赋值的区别
2010/12/29 PHP
mac下Apache + MySql + PHP搭建网站开发环境
2014/06/02 PHP
php实现根据字符串生成对应数组的方法
2014/09/22 PHP
PHP设计模式之观察者模式定义与用法示例
2018/08/04 PHP
extjs render 用法介绍
2013/09/11 Javascript
jQuery ajax请求返回list数据动态生成input标签,并把list数据赋值到input标签
2016/03/29 Javascript
使用postMesssage()实现iframe跨域页面间的信息传递
2016/03/29 Javascript
清除输入框内的空格
2016/12/21 Javascript
jquery mobile实现可折叠的导航按钮
2017/03/11 Javascript
解决低版本的浏览器不支持es6的import问题
2018/03/09 Javascript
基于Axios 常用的请求方法别名(详解)
2018/03/13 Javascript
详解react native页面间传递数据的几种方式
2018/11/07 Javascript
详解jquery和vue对比
2019/04/16 jQuery
Vue使用Three.js加载glTF模型的方法详解
2020/06/14 Javascript
[44:41]Fnatic vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python 队列详解及实例代码
2016/10/18 Python
python爬虫的工作原理
2017/03/05 Python
python merge、concat合并数据集的实例讲解
2018/04/12 Python
python 用正则表达式筛选文本信息的实例
2018/06/05 Python
Python如何计算语句执行时间
2019/11/22 Python
Python如何实现定时器功能
2020/05/28 Python
python 实现客户端与服务端的通信
2020/12/23 Python
非常漂亮的CSS3百叶窗焦点图动画
2016/02/24 HTML / CSS
CSS3实现可爱的小黄人动画
2016/07/11 HTML / CSS
CSS3 @media的基本用法总结
2019/09/10 HTML / CSS
Data URI scheme详解和使用实例及图片base64编码实现方法
2014/05/08 HTML / CSS
HTML5中input[type='date']自定义样式与日历校验功能的实现代码
2017/07/11 HTML / CSS
日本非常有名的内衣丝袜品牌:GUNZE
2017/01/06 全球购物
马来西亚排名第一的宠物用品店:Pets Wonderland
2020/04/16 全球购物
mysql的最长数据库名,表名,字段名可以是多长
2014/04/21 面试题
工作粗心大意检讨书
2014/09/18 职场文书
村主任群众路线教育实践活动个人对照检查材料思想汇报
2014/10/01 职场文书
2015年班组工作总结
2015/04/20 职场文书