‘壹’ 在html上使用smarty框架,怎么使用php的str_replace函数,举个例子!
{$articleTitle|replace:"Garden":"Vineyard"}
把garden 换成 Vineyard
‘贰’ smarty 使用php标签
使用smarty就要有程序和模板
比如:
在程序里:
<?php
$a=2+1;
$smarty->assign('a', $a); //变量赋值
$smarty->display('index.html');//给那个模板
?>
在模板里:
{$a}<!--这就出现<? php echo (2+1) ?>的结果了-->
‘叁’ PHP新手困惑:smarty如何在函数中返回 分配的值
不知所云,是不是想要$smarty->_tpl_vars?
所有的assign的变量,都可以从{php}$smarty->_tpl_vars[ASSIGN_NAME]{/php}获取到
限smarty2.6以前
‘肆’ php中smarty模板中如何使用preg_match_all和preg_replace函数
Smarty2和Smarty3在实现上差不多,但是在smarty2升级到smarty3的时候还是要注意些许不同。
下面是已知的和smarty2不兼容的地方 == 语法 ==Smarty 3 API有些方面进行了更新。一些Smarty 2 API调用需要更新以便符合Smarty 3。你可能会得到提示,推荐你使用新的语法。可以查看Smarty 3附带的 README 文件获得更多信息。
{$array|@mod} 语法总是让人迷惑,加上@符号说明修饰符作用于数组而不是作用于数组的每个元素。通常你总是想让这个修饰符作用于这个变量而不必考虑它的类型。在 Smarty 3中,{$array|mod} 和 {$smary|@mod}
是等同的。去掉@符号,修饰符仍然作用于数组。如果你想修饰符作用于数据元素,你必须在模板中循环数组,或者使用自定义修饰符以支持数组遍历。
大多smrty函数已经在需要的地方例如{html_options}进行了转义。 == PHP版本 ==Smarty 3 仅支持PHP 5. 在PHP 4将不能正常工作。 == {php} 标记 ==
Smarty 3 默认关闭 {php} 标记支持,不推荐使用。你可以通过设置$smarty->allow_php_tag=true来启用。{php} 块中的变量不再与同一页中的其它{php}块共享作用域,因此在使用的时候要注意。 == 定界符和空格 ==
Smarty 定界符 {} 有空格包围是不再认为是Smarty标记。因此,{ foo } 将被Smarty忽略,但是 {foo} 将被识别。这个变化使得 Javascript/CSS更容易在smarty中使用,而没有必要使用 {literal}.
这个特性可以通过设置 $smarty->auto_literal = false; 禁用。 == 未用引号的字符串 ==
Smarty 2 对于参数中未用引号括起来的字符串有点宽容(并且模棱两可)。Smarty 3 比较严格。对于不包含特殊字符(A-Za-z0-9_之外的字符)的字符串仍然可以不用引号括起来。比如下面例子中文件名就必须用引号括起来。[xhtml]view plain{assign var=foo value=baz} <-- works ok {include file="path/foo.tpl"} <-- needs quotes! == 扩展Smarty类 ==
Smarty 3 遵循PHP5标准构造规则。扩展Smarty类的时候,使用 __construct() 作为类的构造函数的名称。如果你实现自己的构造函数,一定要先调用 parent::__construct() [php]view plainclass MySmarty extends Smarty { function __construct() { parent::__construct(); // your initialization code goes here } } == 自动加载器 ==
Smarty 用spl_autoload_register函数 实现了它自己的自动加载器。如果想在自己的应用中使用自动加载器,就必须使用此方法注册。
使用 __autoload() 将失败。 这是PHP5标准自动加载函数。可以查看
http://us3.php.net/manual/en/function.spl-autoload-register.php== 插件文件名 ==
自从Smarty 3使用默认的spl自动加载器,就要求插件文件名使用小写字母。Smarty 2 允许使用大小写混合插件名,你必须重命名以用于smarty 3. == Smarty特殊变量作用域 ==
在Smarty 2中Smarty特殊变量 $smarty.section.* and $smarty.foreach.*
拥有全局作用域。如果子模板中含有同名的循环,就会覆盖父模板中的值。在Smarty 3中这些特殊变量将只作用于定义循环所在的模板。若是需要在子模板中使用,就不得不使用参数传递。
<source lang="smarty">
{include file="path/foo.tpl" index=$smarty.section.foo.index}
</source>== SMARTY_RESOURCE_CHAR_SET ==
Smarty 3 设置常量 SMARTY_RESOURCE_CHAR_SET 为 utf-8作为模版文件的默认字符集.
只是作为像 escape 等函数的默认字符集. 如果你的模板使用其它字符集, 就必须自己定义这个常量.== trigger_error()
API 函数 trigger_error() 已被移除。 == Smarty 常量 ==
下面这些常量
SMARTY_PHP_PASSTHRU
SMARTY_PHP_QUOTE
SMARTY_PHP_REMOVE
SMARTY_PHP_ALLOW
已被类常量替代
Smarty::PHP_PASSTHRU
Smarty::PHP_QUOTE
Smarty::PHP_REMOVESmarty::PHP_ALLOW
‘伍’ 使用Smarty,如何在模板中使用自己的函数 - PHP进阶讨论
$smarty->register_function(\'pic_list\', \"pic_list\");具体看手册有关register_function用法另外还有方法就是写好便准命名和格式的函数,放到smarty定义的扩展目录
‘陆’ PHP模板中smarty_block函数的用法
Smarty末班引擎中提供了三种插件支持,分别是block(块),function(函数),modifier(调节器),用户可以自己扩展。
block:是一种非常灵活的高级插件,这种插件在模板中使用时需要成对出现,Smarty内置的block插件例如section,foreach等,使用格式为:
{section name="customer" loop="$data"}
<li>内容</li>
{/section}
function:他的作用类似于函数,在模板中使用无需成对出现,系统内置的如include,格式为:{include file="web/index.tpl"}。
modifier:调节器是用于对变量进行修饰的,内置的调节器如:truncate(截取字符长度),date_format(格式化时间),使用格式为:
{$nowtime|date_format:"%Y-%m-%d"}
在来分析下你的问题:
-----------------------------------------------------------------------
你提问中的这个就应当属于block插件,其中blockname是个插件名,此插件不包含任何参数。
{blockname}<!--插件开始标签-->
没有缓存的:{$smarty.now}<!--插件输入的内容,Smarty.now为全局函数,意思是输出当前时间-->
{/blockname}<!--插件结束标签-->
‘柒’ smarty怎么引入php文件
<?php
/**
*
* @version $Id: index.php
* @package
* @author www.php100.com
* @action 显示实例程序
*/
include_once("./Smarty/Smarty.class.php"); //包含smarty类文件
$smarty = new Smarty(); //建立smarty实例对象$smarty
$smarty->templates("./templates"); //设置模板目录
$smarty->templates_c("./templates_c"); //设置编译目录
$smarty->cache("./cache"); //缓存目录
$smarty->cache_lifetime = 0; //缓存时间
$smarty->caching = true; //缓存方式
$smarty->left_delimiter = "{#";
$smarty->right_delimiter = "#}";
$smarty->assign("name", "zaocha"); //进行模板变量替换
$smarty->display("index.htm"); //编译并显示位于./templates下的index.htm模板
?>
参考:smarty半小时快速上手教程
http://www.chinaz.com/program/2010/0224/107006.shtml
‘捌’ 这个php的smarty函数怎么用
您使用的是smarty的预过滤器机制,这个是自动调用的。当你通过register_prefilter
把这个函数注册进去后,在display()时smarty会自动去调用来完成页面压缩的。
‘玖’ smarty怎么用php函数把字符串转成数组后在计算数组个数
以下是对php中的数组与字符串的转换函数进行了详细的整理汇总,需要的朋友可以参考下
1.将一个字符串转化为数组
str_split()用于将一个字符串转化为数组
语法:
复制代码
代码如下:
str_split(string,length)
<SPAN
style="COLOR: #333333"><SPAN style="FONT-SIZE: 12px"><SPAN
style="FONT-FAMILY:
宋体">//</SPAN></SPAN></SPAN>string是必须的,是要分割的字符串;<SPAN
style="FONT-SIZE: 12px"><SPAN style="FONT-FAMILY: 宋体; COLOR:
#333333"><SPAN style="LINE-HEIGHT:
28px">
//length是可选的,规定每个数组元素的长度
</SPAN></SPAN></SPAN>
tips:
如果 length 小于 1,str_split() 函数将返回
false。
如果 length 大于字符串的长度,整个字符串将作为数组的唯一元素返回。
例子:
复制代码
代码如下:
<?php
$str="www..com";
print_r(str_split($str));
?>
‘拾’ thinkphp中如何用内置的smarty调用php中自定义的函数
可以自己写个smarty插件,我以前写过,你根据smarty手册上的提示也可以写出来的。相信自己!
这是我以前写的,转换时间的:
<?php
/**
*时间显示,将Unix时间或普通时间和转为生活时间用语
*/
functionsmarty_modifier_life_time($string)
{
if(strpos($string,'-')||strpos($string,'.'))
{
$string=strtotime($string);
}
$res=time()-$string;
if($res<=60)
{
return'1分钟前';
}elseif($res<=3600){
if($res>=1800&&$res<=1800+60) return'半小时前';
returnfloor($res/60).'分钟前';
}elseif($res<=3600*24){
if($res>=3600*12&&$res<=3600*12+3600) return'半天前';
returnfloor($res/3600).'小时前';
}elseif($res<=3600*24*30){
if($res>=3600*24*15&&$res<=3600*24*15+3600*24) return'半个月前';
returnfloor($res/(3600*24)).'天前';
}elseif($res<=3600*24*30*365){
if($res>=3600*24*30*6&&$res<=3600*24*30*6+3600*24*30) return'半年前';
returnfloor($res/(3600*24*30)).'月前';
}else{
if($res>=3600*24*30*365&&$res<=3600*24*30*365+3600*24*30) return'一年前';
returndate('Y-m-dH:i',$string);
}
}
?>