PHP模板引擎Smarty内置变量调解器用法详解


Posted in PHP onApril 11, 2016

本文实例讲述了PHP模板引擎Smarty内置变量调解器用法。分享给大家供大家参考,具体如下:

Smarty 中的变量调解器相当于函数,其调用方式为:通过 "|" 后面直接跟调解器函数名,如果有参数,得加在 ":" 后面,多个参数的话,累加即可。

下面为您介绍 Smarty 中内置的变量调解器:

1、capitalize

将变量里的所有单词首字大写。参数值 boolean 型决定带数字的单词,首字是否大写。默认不大写

index.php

$tpl->assign('str', 'hello world wor2ld!!!');
$tpl->display('index.html');

index.html(模板文件)

<{$str|capitalize}>
<{$str|capitalize:true}>

结果为:Hello World wor2ld!!!、 Hello World Wor2Ld!!!

2、count_characters

计算变量里的字符数,该调解器默认不计算空格(空格、制表符、回车…)只计算字符的个数,并且能很好的支持中文字符计算;如果添加参数 true ,则计算空格。

index.html

<{$str|count_characters}> // 不计算空格
<{$str|count_characters:true}> // 计算空格

结果为:13、14

3、cat

连接字符串,将cat里的值连接到给定的变量后面。

<{$str|cat:' Happy new year.'}>

结果为:hello world!!! Happy new year.

4、count_paragraphs

计算段数,计算变量里的段落数量,完美支持中文段落。

index.php

$str = <<assign('str', $str);
$tpl->display('index.html');

index.html

<{$str|count_paragraphs}>

结果为:3

5、count_sentences

计算句数,计算变量里句子的数量。注:只支持英文语句,不支持中文。

index.php

$str = <<assign('str', $str);

index.html

<{$str|count_sentences}>

结果为:2

6、count_words

计算词数,计算变量里的词数。

index.php

$str = <<assign('str', $str);

index.html

<{$str|count_words}>

结果为:12

7、date_format

日期格式化,具体参数很多,这里只举例中国式日期格式

index.php

$tpl->assign('date', time()); // 传递时间戳

index.html

<{$date|date_format:'%Y-%m-%d %H:%M:%S'}>

结果为:2012-01-26 14:37:22

8、default

默认,为空变量设置一个默认值,当变量为空或者未分配的时候,将由给定的默认值替代输出。

index.php

$tpl->assign('str', ''); // 赋值给空

index.html

<{$str|default:'默认输出...'}>、<{$string|default:'没有定义,默认输出...'}>

结果为:默认输出...、没有定义,默认输出...

9、escape

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

index.php

$html = <<Google
html;
$js = <<
  for (var i=0; i<100; i++) {
    window.alert(i);
  }
js;
$tpl->assign('html', $html); // html
$tpl->assign('url', 'http://www.google.com.hk'); // url
$tpl->assign('js', $js); // javascript

index.html

HTML 转码:<{$html|escape:"html"}>
URL 转码:<{$url|escape:"url"}>
JS 转码:<{$js|escape:"javascript"}>

结果为:

HTML 转码:Google
URL 转码:http%3A%2F%2Fwww.google.com.hk
JS 转码:

10、indent

缩进,每行缩进字符串,第一个参数指定缩进多少个字符串,默认是四个字符;第二个参数,指定缩进用什么字符代替。

11、lower

小写,将变量字符串小写。

使用方法:<{$str|lower}>

12、upper

大写,将变量改为大写。

使用方法:<{$str|upper}>

13、nl2br

换行符替换成

所有的换行符将被替换成 ,同php的nl2br()函数一样。

14、regex_replace

正则替换,寻找和替换正则表达式,和 preg_replace() 的语法一样。

index.php

$tpl->assign('str', 'http://www.google.com');

index.html

<{$str|regex_replace:'/go{2}gle/':'baidu'}>

结果为:http://www.baidu.com

15、replace

替换,简单的搜索和替换字符串。

16、spacify

插空,插空(不知道这个词是什么意思,顾名思义了^^)是一种在字符串的每个字符之间插入空格或者其他的字符(串)。

index.php

$tpl->assign('str', 'hello world!!!');

index.html

<{$str|spacify:"^^"}>

结果为:h^^e^^l^^l^^o^^ ^^w^^o^^r^^l^^d^^!^^!^^!

17、string_format

字符串格式化,是一种格式化浮点数的方法,例如:十进制数.使用 sprintf 语法格式化。

index.php

$tpl->assign('num', 23.5787446);

index.html

<{$num|string_format:"%.2f"}>
<{$num|string_format:"%d"}>

结果为:23.58、23

18、strip

替换所有重复的空格、换行、tab 为单个

index.php

$tpl->assign('str', "Grandmother of\neight makes\t  hole in one.");

index.html

<{$str|strip:" "}>

结果为:Grandmother of eight makes hole in one.

源代码:

Grandmother of eight makes hole in one.

19、strip_tags

去除在<和>之间的所有标签,包括<和>。

index.php

$tpl->assign('str', "Google");

index.html

<{$str|strip_tags}>

结果为:Google(源代码也是 Google,去掉了标签和标签)

20、truncate

截取,截取字符串开始的一段.默认是80个,你可以指定第二个参数作为在截取的那段字符串后加上什么字符,默认情况下,smarty会截取到一个词的末尾,如果你想要精确的截取多少个字符,把第三个参数改为"true" 。

index.php

$tpl->assign('str', '从前有座山,山上有座庙。庙里有一个老和尚和一个小和尚...');

index.html

<{$str|truncate:10:'...':true}>

结果为:从前有座山,山...

希望本文所述对大家基于smarty模板的PHP程序设计有所帮助。

PHP 相关文章推荐
优化NFR之一 --MSSQL Hello Buffer Overflow
Oct 09 PHP
PHP下MAIL的另一解决方案
Oct 09 PHP
分享一段php获取linux服务器状态的代码
May 27 PHP
百度地图API应用之获取用户的具体位置
Jun 10 PHP
destoon利用Rewrite规则设置网站安全
Jun 21 PHP
ThinkPHP中自定义目录结构的设置方法
Aug 15 PHP
PHP如何将log信息写入服务器中的log文件
Jul 29 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
Dec 21 PHP
php mailer类调用远程SMTP服务器发送邮件实现方法
Mar 04 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
Nov 13 PHP
PHP从零开始打造自己的MVC框架之入口文件实现方法详解
Jun 03 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
Dec 25 PHP
PHP模板引擎Smarty自定义变量调解器用法
Apr 11 #PHP
PHP中如何防止外部恶意提交调用ajax接口
Apr 11 #PHP
PHP读取mssql json数据中文乱码的解决办法
Apr 11 #PHP
PHP模板引擎Smarty中的保留变量用法分析
Apr 11 #PHP
PHP模板引擎Smarty内建函数foreach,foreachelse用法分析
Apr 11 #PHP
PHP模板引擎Smarty之配置文件在模板变量中的使用方法示例
Apr 11 #PHP
PHP模板引擎Smarty中变量的使用方法示例
Apr 11 #PHP
You might like
dede3.1分页文字采集过滤规则详说(图文教程)续二
2007/04/03 PHP
php设计模式 Template (模板模式)
2011/06/26 PHP
PHP gbk环境下json_dencode传送来的汉字
2012/11/13 PHP
PHP关于htmlspecialchars、strip_tags、addslashes的解释
2014/07/04 PHP
php分页原理 分页代码 分页类制作教程
2016/09/23 PHP
php mysql_real_escape_string addslashes及mysql绑定参数防SQL注入攻击
2016/12/23 PHP
解决thinkphp5未定义变量会抛出异常,页面错误,请稍后再试的问题
2019/10/16 PHP
jquery submit ie6下失效的原因分析及解决方法
2013/11/15 Javascript
js自定义回调函数
2015/12/13 Javascript
实例讲解JavaScript中的this指向错误解决方法
2016/06/13 Javascript
详解Javascript函数声明与递归调用
2016/10/22 Javascript
ThinkJS中如何使用MongoDB的CURD操作
2016/12/13 Javascript
JavaScript实现大图轮播效果
2017/01/11 Javascript
使用重写url机制实现验证码换一张功能
2017/08/01 Javascript
浅谈angular.copy() 深拷贝
2017/09/14 Javascript
基于jQuery使用Ajax动态执行模糊查询功能
2018/07/05 jQuery
基于D3.js实现时钟效果
2018/07/17 Javascript
vscode中vue-cli项目es-lint的配置方法
2018/07/30 Javascript
layui动态加载多表头的实例
2019/09/05 Javascript
JavaScript Window窗口对象属性和使用方法
2020/01/19 Javascript
vue与iframe之间的信息交互的实现
2020/04/08 Javascript
js实现移动端轮播图滑动切换
2020/12/21 Javascript
[02:34]DOTA2亚洲邀请赛 BG战队出场宣传片
2015/03/09 DOTA
Python实现视频下载功能
2017/03/14 Python
pycharm双击无响应(打不开问题解决办法)
2020/01/10 Python
python读写数据读写csv文件(pandas用法)
2020/12/14 Python
一级方程式赛车官方网上商店:F1 Store(支持中文)
2018/01/12 全球购物
迪卡侬(Decathlon)加拿大官网:源自法国的运动专业超市
2020/11/22 全球购物
构造方法和其他方法的区别
2016/04/26 面试题
优秀大学生的自我评价
2014/01/16 职场文书
节约能源标语
2014/06/17 职场文书
我的中国梦演讲稿400字
2014/08/19 职场文书
新闻学专业职业生涯规划范文:我的人生我做主
2014/09/12 职场文书
个人收入证明模板
2014/09/18 职场文书
简易版租房协议书范本
2014/10/13 职场文书
教你用Python写一个植物大战僵尸小游戏
2021/04/25 Python