php Smarty模版详解

日期:2010-05-25

点击:309

来源: 未知

分享至:

Smarty是一个php模板引擎,它分开了逻辑程序和外在的内容,提供了一种易于管理的方法,今天详细讲解一下smarty如何使用。

Smarty要求web服务器运行php4.0.6和以上版本.

smarty安装需要smarty库文件。可以去官方网站http://smarty.php.net下载。

网上讲了很多安装的教程,但是我都没有成功,所以直接把整个目录名改为smarty直接复制到了网站所在的目录下,然后打开

http://网站路径/smarty/demo/index.php,显示正常,应该算是安装成功了。

基本语法

所有的smarty标签都被加上了定界符.在smarty里,所有定界符以外的内容都是静态的,当smarty遇到了模板标签,将尝试解释他们,然后再以恰当的方式输出.

默认情况下是 {和},但它们是可定制的.定制方法是:

$smarty->left_delimiter = \'\';

1.注释

模板注释被*号包围,例如 {* this is a comment *}

smarty注释将不被输出.它是模板内在的注释.

2.变量

模板变量以$开头,可以包含数字,字母和下划线。

config_file变量是例外要用#变量名#的方法引用

3.函数

smarty标签输出一个变量或者调用某种函数.

在定界符内函数和其属性将被处理和输出.例如:

{funcname attr1=val attr2=val}.

funcname为函数的名称比如:include等,attr1,attr2为属性名,val为属性相应的值。

在模板里无论是内建函数还是自定义函数都有相同的语法.

内建函数将在smarty内部工作,例如 {if}, {section} 和{strip}.他们不能被修改.

自定义函数通过插件机制起作用,它们是附加函数,可以随意修改,自行添加.

例如 {html_options} and {html_select_date}

4.属性

静态数值不需要加引号,布尔值(真或假)也不需要引号,可以是true,on,yes或者false,off,no. 但是字符串例外.变量同样被用到了,它们也不能加引号.

5.在字符串中插入变量

只能识别数字,字母,下划线和[]的组合,如果为复杂的形式需要用``将变量隔起来。比如{func var=test $foo.bar test} 中只能识别变量$foo,要识别$foo.bar,需要写成{func var=test `$foo.bar` test}的格式。

6.一些保留字的显示方法

在模板中如果要将smarty的一些保留字作为语言的内容显示出来,比如显示分隔符,默认为{}的方法是: {ldelim},{rdelim} 或者{$smarty.ldelim},{$smarty.rdelim} 或者可以把{}放在{literal} .. {/literal} 中间输出。

smarty的保留变量

{$smarty}保留变量可以被用于访问一些特殊的模板变量.

以下是全部.

页面请求变量

以下是访问页面请求变量诸如get,post,cookies,server,enviroment和session变量的例子. 例如{$smarty.server.SERVER_NAME}取得服务器变量,{$smarty.env.PATH}取得系统环境变量path, {$smarty.request.username}取得get/post/cookies/server/env的复合变量。

{$smarty.now}变量用于访问当前时间戳.

可以用 date_format调节器格式化输出. 例如{$smarty.now|date_format:%Y-%m-%d %H:%M:%S}

{$smarty.const}

你可以直接访问PHP常量. 例如{$smarty.const._MY_CONST_VAL}

{$smarty.capture}

可以通过 {capture}..{/capture}结构 截取的输出可以使用{$smarty} 变量访问.

{$smarty.config}

{$smarty}变量 可以访问已经加载的config变量.

例如 {$smarty.config.foo}就可以表示 {#foo#}.

{$smarty.section}, {$smarty.foreach}

{$smarty} 变量可以访问\'section\'和\'foreach\'循环的属性.

{$smarty.template}

显示当前被处理的模板的名字.

{$smarty.version}

显示smarty模板的版本

{$smarty.ldelim}

显示左分隔符

{$smarty.rdelim}

显示右分隔符

变量调节器

变量调节器用于变量,自定义函数和字符串.

可以使用\'|\'符号和调节器名称应用调节器.

变量调节器由赋予的参数值决定其行为.

参数由\':\'符号分开.

如果你用变量调节器调节数组变量,结果是数组的每个值都被调节.如果你想要调节器调节整个数组,你必须在调节器名字前加上@符号.

例如: {$articleTitle|@count}(这将会在输出 $articleTitle 数组里的数目)

capitalize

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

count_characters

计算变量值里的字符数.参数值boolean型决定是否计算空格数。默认不计算空格

cat

将cat里的参数值连接到给定的变量后面.默认为空。

count_paragraphs

计算变量里的段落数量

count_sentences

计算变量里句子的数量

count_words

计算变量里的词数

date_format

日期格式

第一个参数控制日期格式.

如果传给date_format的数据是空的,将使用第二个参数作为默认时间

%a - 星期几的简写

%A - 星期几的全写

%b - 月份的简写

%B - 月份的全写

%c - 日期时间06/12/05 11:15:10

%C - 世纪时间

%d - 一个月的第几号(从 01 到 31)

%D - 同 %m/%d/%y

%e - 一个月的第几号,号为单数则前面加一空格 (从 1 到 31)

%g - 世纪

%G - 世纪 [0000,9999]

%h - 同%b

%H - 24小时形式的小时(从00到23)

%I - 12小时形式的小时(从01到 12)

%j - 一年中的第几天(从 001 到 366)

%k - 24小时形式的小时,单数字前面加空格. (从 0 到 23)

%l - 12小时形式的小时,单数字前面加空格.(range 1 to 12)

%m - 月份 (range 01 to 12)

%M - 分

%n - 换行符

%p - 显示早上还是下午`am\' 或 `pm\'

%r - a.m. 或 p.m.形式的时间

%R - 24小时形式的时间

%S - 秒

%t - tab符号

%T - 同%H:%M:%S

%u - 用 [1,7],表示星期几

%U - 计算是该年的第几个星期,从该年的第一个星期天开始计算

%V - 计算是该年的第几个星期, 从 01 到 53, 第一个星期必须至少有4天在这一年, 星期天作为这个星期的第一天

%w - 用数字的形式表示是星期的第几天, 星期天 为 0

%W - 用数字的形式是该年的第几个星期,从该年的第一个星期一开始计算

%x - 显示日期:月/日/年

%X - 显示时间:小时:分钟:秒

%y - 不包括世纪的年份

%Y - 包括世纪的年份

%Z - 时区

%% - 输出%

其中有些有时不能正常输出。

default

默认

为空变量设置一个默认值.

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

escape

转码

参数值为html,htmlall,url,quotes,hex,hexentity,javascript。默认是html转码

indent

缩进

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

lower

小写

This is used to lowercase a variable.

将变量字符串小写

nl2br

换行符替换成

regex_replace

正则替换

寻找和替换正则表达式.必须有两个参数,参数1是替换正则表达式. 参数2使用什么文本字串来替换

replace

替换

简单的搜索和替换字符串必须有两个参数,参数1是将被替换的字符串. 参数2是用来替换的文本

spacify

spacify是在字符串的每个字符之间插入空格或者其他的字符串. 参数表示将在两个字符之间插入的字符串,默认为一个空格。

string_format 字符串格式化

是一种格式化浮点数的方法.例如十进制数.使用sprintf语法格式化。参数是必须的,规定使用的格式化方式。%d表示显示整数,%.2f表示截取两个浮点数。

strip 去除(多余空格)

替换所有重复的空格,换行和tab为单个或者指定的字符串. 如果有参数则是指定的字符串。

strip_tags 去除所有html标签

truncate 截取

参数1,规定截取的字符数.默认是80个.

第二个参数指定在截取的那段字符串后加上什么字符.默认为...

第三个参数决定是否精确截取,默认情况下为false,则smarty不会分割单词。

upper 将变量改为大写

wordwrap 行宽约束

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

第二个参数指定在约束点使用什么字符(默认是换行符 ).

第三个参数决定是否精确截取字符,默认情况下是不精确截取,就是截取时不能分开单词。

内建函数

内建函数不能擅自修改。

capture

capture函数的作用是收集模板输出的数据到一个变量里,而不是把它们输出到页面.例如任何在 {capture name=foo}和{/capture}之间的数据都被收到了由函数的名称属性指定的变量{$foo}里,或者{$smarty.capture.foo}里。如果函数没有名字属性,将使用default.每个{capture}都必须对应{/capture},也不能嵌套使用capture函数。

config_load

引用配置文件

file是必须的,说明要包含进来的配置文件名称,section说明要加载的部分的名称,scope被处理的变量的作用域.必须是local,parent或者global.

local的意思是变量将在本模板里被加载.

parent 的意思是变量将在本模板和上级模板被加载.

global的意思是变量将应用到所有的模板.默认为local。变量是否在上级模板可视,默认为no。如果scope属性已经有了,这个值将被忽略.

foreach,foreachelse

foreach循环是选择性的section循环.用于遍历关联数组.foreach的语法比section简单的多,但是作为一个折中它只能用于简单数组.

foreach必须的参数是from和item. from变量表示需要循环的数组的名称,item表示当前元素的变量名,key表示当前关键字的变量名,name表示访问foreach属性的foreach循环名。循环可以互相嵌套,被嵌套的循环之间的名字必须是独立的.foreachelse 在from变量没有值的时候被执行

include

用来引用其他的模板。

file属性是必须的用来表示所引用模板的名字,assign表示include文件将要分配的输出的变量。你可以自行用属性名=属性值的方式定义任意个局部变量。

include_php

用来在模板中引入php脚本。file是必须的用来表示php脚本的路径,once确定如果在模板中引用了php脚本多次,是否只装载一次。默认为true。

insert

用来包含php脚本中的函数,name是必须的,表示所插入的脚本的名称,注意如果名称是name,则包含的函数则是insert_name(),所以所有要插入的函数要有前缀insert_ 。如果用了assign属性,则insert的输出将会分配给模板变量而不会显示。 script表示要引用的脚本路径。这个程序产生的内容将不会被缓存,在每次调用该页时重新执行,适用于广告,投票,查询结果等互动的地方。

if,elseif,else

if语句和和条件同php差不多,但每个词之间必须用空格分割开。也有一些新的条件语句,列举如下:eq相等,ne、neq不相等,gt大于,lt小于,gte、ge大于等于,lte、le 小于等于,not非,mod求模。is [not] div by是否能被某数整除,is [not] even是否为偶数,$a is [not] even by $b即($a / $b) % 2 == 0,is [not] odd是否为奇,$a is not odd by $b即($a / $b) % 2 != 0

php

php标记可以让模板中能直接使用php语言。

验证码:

理智评论文明上网,拒绝恶意谩骂

用户名:

匿名发表

php smarty key,php Smarty模版详解相关推荐

  1. smarty手册-smarty中foreach循环语句详解

    原文地址:smarty手册-smarty中foreach循环语句详解作者:谭博 {foreach}循环也有自身属性的变量,可以通过{$smarty.foreach.name.property}访问,其 ...

  2. php模板引擎循环start,PHP模板引擎Smarty内建函数section,sectionelse用法详解

    本文实例讲述了PHP模板引擎Smarty内建函数section,sectionelse用法.分享给大家供大家参考,具体如下: section 是 Smarty 模板中除了 foreach 以外的另一种 ...

  3. PHP模板引擎Smarty内建函数section,sectionelse用法详解

    本文实例讲述了PHP模板引擎Smarty内建函数section,sectionelse用法.分享给大家供大家参考,具体如下: section 是 Smarty 模板中除了 foreach 以外的另一种 ...

  4. PHP Smarty 模板,php之Smarty模板使用方法示例详解

    本文详细剖析了smarty模板的使用方法,对于学习smarty的朋友有一定的参考价值.详情如下: 一.模板中的注释 每一个Smarty模板文件,都是通过Web前台语言(xhtml,css和javasc ...

  5. {literal} php 标签,Smarty中{literal}的使用详解

    如何在文件里加入JS代码,如果按一般平常添加方法,会出错,解决的方法: 把script套在{literal}{/literal}之间试试看,例如: {literal} {/literal} ----- ...

  6. MySQL 优化器之Index merge Multi-Range Read MRR与Batched Key Access使用案例详解

    MySQL 优化器之Index merge Multi-Range Read  MRR与Batched Key Access介绍 索引合并Index merge 覆盖索引是在索引里即有查询时需要的字段 ...

  7. java redis expire 1_redis 下key的过期时间详解 :expire

    Redis是一个开源的Key-Value数据缓存,和Memcached类似. Redis多种类型的value,包括string(字符串).list(链表).set(集合).zset(sorted se ...

  8. mysql索引key值_Mysql索引详解及优化(key和index区别)

    1.普通索引(加快对数据的访问速度) –直接创建索引(length表示使用名称前1ength个字符) create index index_name on table_name(字段名(length) ...

  9. docker inspect 详解

    一.功能介绍 docker inspect 会以 json 格式得到 docker 镜像/容器的元数据. 如下,查看mysql镜像的完整元数据: docker inspect mysql:5.7 [{ ...

  10. python字典转dataframe_python DataFrame转dict字典过程详解

    python DataFrame转dict字典过程详解 这篇文章主要介绍了python DataFrame转dict字典过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习 ...

最新文章

  1. svm 的提前处理
  2. nagios监控告警之网络流量监控(附pnp模板)
  3. 漏洞挖掘 符号执行_简述符号执行
  4. Log保存文件-Android
  5. DWR实现服务器端向客户端推送消息
  6. 有前端基础学前端要多久?
  7. 第 15 章 垃圾回收相关算法
  8. 教授先生带你学习链表:链表节点的删除与增添2
  9. PhoneGap:免费开源的 HTML5 移动应用开发平台
  10. linux安装weblogic界面,Weblogic11g 安装Linux下无Weblogic安装图形界面
  11. 从斐波那契数列讲解算法设计的思路
  12. Neo4j下载(linux系统)
  13. 现代通信技术之软交换技术和IMS技术
  14. PSP开发简明教程(1)
  15. SPSS 产生正交数据集
  16. Hotelling T2检验和多元方差分析
  17. GUI(Graphic User Interface) 图形用户界面
  18. “没有银弹”的由来!
  19. 计算机学院青年教师讲课,【教学动态】计算机科学与信息工程学院举办首届中青年教师讲课大赛...
  20. 安装google扩展

热门文章

  1. curl模拟登陆 php实例,php 使用curl模拟登录人人(校内)网的简单实例
  2. Ubuntu安装Qt以及配置步骤
  3. 一句代码从刷网课的劳累中解脱
  4. bochs上网镜像怎么上网_【bochs win10镜像可上网版】bochs win10镜像img下载 完整版-趣致软件园...
  5. linux-CentOS7.6操作系统安装手册
  6. 怎么用谷歌学术检索下载外文文献
  7. Tree命令的下载与使用
  8. c4d阿诺德渲染器支持a卡吗_C4D常用的4大主流渲染器如何选择与比较 (OC/RS/VR/阿诺德)...
  9. 运筹学 知识点总结(三)
  10. 2021年皓丽新品- 86KD1 86寸纳米智慧黑板(电容屏)-产品说明