`
vtrtbb
  • 浏览: 354080 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

smary 格式化

阅读更多
date_format
    用来格式化一个日期和时间为给出的strftime()格式。传递给Smarty的日期可以是Unix的时间戳,MySQL时间戳,或者任何包含年月日的字符串,可以为PHP的strtotime()解析即可。设计者然后可以用date_format来完全控制日期的格式。如果传递给date_format的日期是空的并指定了第二个参数,那么第二个参数将作为日期进行格式化。 

参数位置 类型 必需? 缺省 描述
1 string No %b %e, %Y 输出日期的格式。
2 string No n/a 如果第一个参数为空,则使用该参数为缺省日期。

 

注意:自从Smarty-2.6.10开始,传递给date_format的数字值总是被理解为一个Unix时间戳(除了后面要讲到的MySQL时间戳)。

在Smarty-2.6.10之前,如果一个数字字符串(如YYYYMMDD)可以由PHP的strtotime()解析,有时会被解析为日期字符串而不是时间戳(取决于strtotime()的底层实现机制)。

唯一的例外是MySQL时间戳。它们只包含数字,14位长(YYYYMMDDHHMMSS),MySQL时间戳优先于Unix时间戳。

程序员注解:date_format其实就是PHP的strftime()函数的封装。PHP编译的系统上strftime()函数决定了转换子可用的数量。可用的转换子的完整列表可以检查系统的man手册。


例子5-8. date_format

<?php

$config['date'] = '%I:%M %p';
$config['time'] = '%H:%M:%S';
$smarty->assign('config', $config);
$smarty->assign('yesterday', strtotime('-1 day'));

?> 

    模板使用$smarty.now来获得当前日期:

{$smarty.now|date_format}
{$smarty.now|date_format:"%D"}
{$smarty.now|date_format:$config.date}
{$yesterday|date_format}
{$yesterday|date_format:"%A, %B %e, %Y"}
{$yesterday|date_format:$config.time}
 

    上述代码将输出:

Jan 1, 2022
01/01/22
02:33 pm
Dec 31, 2021
Monday, December 1, 2021
14:33:00
 
 

    date_format转换子如下:


%a - 基于当前位置的星期名的简写

%A - 基于当前位置的星期名的全写

%b - 基于当前位置的月份名的简写

%B - 基于当前位置的月份名的全写

%c - 基于当前位置的优先日期和时间呈现

%C - 世纪的值(年份除以100并取整,范围在00到99之间)

%d - 数字表示的日期(01到31)

%D - 等于%m/%d/%y

%e - 数字表示的日期,单个数字将有前导空格(1到31)

%g - 本世纪内基于周数的年份[00,99]

%G - 基于周数的年份,包含世纪数[0000,9999]

%h - 等于%b

%H - 使用24小时制的小时数(00到23)

%I - 使用12小时制的小时数(01到12)

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

%k - 24小时的小时数,一位数时有前导空白(0到23)

%l - 12小时的小时数,一位数时有前导空白(1到12)

%m - 数字表示的月份(01到12)

%M - 数字表示的分钟

%n - 换行字符

%p - 根据给出的时间值为`am'或`pm',或者是基于当前位置的字符串

%r - 以a.m.或p.m.表示的时间

%R - 24小时制的时间

%S - 秒数

%t - 制表符号

%T - 当前时间,等同于%H:%M:%S

%u - 以数字表示的星期,1代表星期一

%U - 当前年份的星期数,当年的第一个星期天作为第一周的第一天

%V - 根据ISO 8601:1988得出的当前年份的星期数,范围从01到53。第一周必须至少在当年有4天,而星期一是该周的第一天。

%w - 星期几,0表示星期天

%W - 当前年份的星期数,当年的第一个星期一作为第一周的第一天

%x - 不含时间的基于当前位置的日期表示

%X - 不含日期的基于当前位置的时间表示

%y - 不含世纪的年份(00到99)

%Y - 包含世纪的年份

%Z - 时区名或其缩写

%% - `%'字符
//=========================================default==========================================================
default
    用来设置一个变量的缺省值。如果该变量被取消设置或是空字符串,则将打印出缺省值。缺省值有一个参数。


注意:如果设置了error_reporting(E_ALL),则未声明的变量在模板中将总是抛出一个错误。该函数用来替换空字符串或零长度的字符串。

 

参数位置 类型 必需? 缺省 描述
1 string No empty 如果变量为空,则输出该值。


例子5-9. default

<?php

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

?> 

    模板为:

{$articleTitle|default:'no title'}
{$myTitle|default:'no title'}
{$email|default:'No email address available'}
 

    输出为:

Dealers Will Hear Car Talk at Noon.
no title
No email address available
//=======================================escape用来编码/转义一个变量为HTML,URL,单引号,16进制,16进制码,JavaScript和Email。缺省时为HTML转义。===================================================
  用来编码/转义一个变量为HTML,URL,单引号,16进制,16进制码,JavaScript和Email。缺省时为HTML转义。


参数位置 类型 必需? 可选值 缺省 描述
1 string No html,htmlall,url,urlpathinfo,quotes,hex,hexentity,javascript,mail  html 使用的转义格式
2 string No ISO-8859-1,UTF-8以及任何由htmlentities()支持的字符集 ISO-8859-1 传递给htmlentities()的字符集编码


例子5-10. escape

<?php

$smarty->assign('articleTitle',
                "'Stiff Opposition Expected to Casketless Funeral Plan'"
                );
$smarty->assign('EmailAddress','smarty@example.com');

?> 

    模板为:

{$articleTitle}
{$articleTitle|escape}
{$articleTitle|escape:'html'}    {* 转义& " ' < > *}
{$articleTitle|escape:'htmlall'} {* 转义所有的HTML实体 *}
{$articleTitle|escape:'url'}
{$articleTitle|escape:'quotes'}
<a href="mailto:{$EmailAddress|escape:"hex"}">{$EmailAddress|escape:"hexentity"}</a>
{$EmailAddress|escape:'mail'}    {* 将EMAIL转换为文本 *}
{'mail@example.com'|escape:'mail'}
 

    输出为:

'Stiff Opposition Expected to Casketless Funeral Plan'
&#039;Stiff Opposition Expected to Casketless Funeral Plan&#039;
&#039;Stiff Opposition Expected to Casketless Funeral Plan&#039;
&#039;Stiff Opposition Expected to Casketless Funeral Plan&#039;
%27Stiff+Opposition+Expected+to+Casketless+Funeral+Plan%27
\'Stiff Opposition Expected to Casketless Funeral Plan\'
<a href="mailto:%62%6f%..snip..%65%74">&#x62;&#x6f;&#x62..snip..&#x65;&#x74;</a>
smarty [AT] example [DOT] com
mail [AT] example [DOT] com
 
 
例子5-11. 其它示例

    PHP函数可以用作修饰符,只要$security允许。

{* "rewind"参数记录了当前位置 *}
<a href="{$SCRIPT_NAME}?page=foo&rewind={$smarty.server.REQUEST_URI|urlencode}">click here</a>
 

    该代码段可以用于Email,请同时参见{mailto}

{* Email地址被打乱 *}
   <a href="mailto:{$EmailAddress|escape:'hex'}">{$EmailAddress|escape:'mail'}</a>
//==================================indent每行的字符串进行缩进,缺省为4个空格==============================================
indent
    每行的字符串进行缩进,缺省为4个空格。作为一个可选参数,你可以制定缩进字符的个数。作为可选的第二个参数,可以指定缩进用的字符,如用"\t"作为制表符。


参数位置 类型 必需? 缺省 描述
1 integer No 4 指定缩进多少个字符
2 string No 空格 用来缩进的字符


例子5-12. indent

<?php

$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.'
                );
?> 

    模板为:

{$articleTitle}

{$articleTitle|indent}

{$articleTitle|indent:10}

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

输出为:

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.

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics