热烈祝贺台州朗动科技的站长论坛隆重上线!(2012-05-28)    热烈庆祝伟大的祖国60周年生日 点击进来我们一起为她祝福吧(2009-09-26)    站长论坛禁止发布广告,一经发现立即删除。谢谢各位合作!.(2009-08-08)    热烈祝贺台州网址导航全面升级,全新版本上线!希望各位一如既往地支持台州网址导航的发展.(2009-03-28)    台州站长论坛恭祝各位新年快乐,牛年行大运!(2009-01-24)    台州Link正式更名为台州网址导航,专业做以台州网址为主的网址导航!(2008-05-23)    热烈祝贺台州Link资讯改名为中国站长资讯!希望在以后日子里得到大家的大力支持和帮助!(2008-04-10)    热烈祝贺台州Link论坛改名为台州站长论坛!希望大家继续支持和鼓励!(2008-04-10)    台州站长论坛原[社会琐碎]版块更名为[生活百科]版块!(2007-09-05)    特此通知:新台州站长论坛的数据信息全部升级成功!">特此通知:新台州站长论坛的数据信息全部升级成功!(2007-09-01)    台州站长论坛对未通过验证的会员进行合理的清除,请您谅解(2007-08-30)    台州网址导航|上网导航诚邀世界各地的网站友情链接和友谊联盟,共同引领网站导航、前进!(2007-08-30)    禁止发广告之类的帖,已发现立即删除!(2007-08-30)    希望各位上传与下载有用资源和最新信息(2007-08-30)    热烈祝贺台州站长论坛全面升级成功,全新上线!(2007-08-30)    
便民网址导航,轻松网上冲浪。
台州维博网络专业开发网站门户平台系统
您当前的位置: 首页 » PHP/Perl编程 » 教大家写个smarty插件

教大家写个smarty插件

论坛链接
  • 教大家写个smarty插件
  • 发布时间:2009-08-03 10:02:35    浏览数:6313    发布者:superadmin    设置字体【   
Smarty很强大,今天我教大家写个smarty的插件吧!

写这个插件是因为我觉得Smarty的截取字符函数太菜了,不能截取UTF8的字符!所以我今天就是为了实现截取UTF8字符功能而写这个教程的!!开始了:

1.首先,下载Smarty。
http://www.smarty.net/ 下载一个稳定的版本。

2.安装Smarty。
其实Smarty是不用安装的,只要解压到你需要的地方就可以了!

3.了解插件目录。
解压之后,我会会发现有个plugins的文件夹,这个文件夹就是放置插件的目录。
好了,我们在这个文件夹中新建一个文件function.utf8cut.php,其中utf8cut这个就是函数名,用文本编辑器打开它,写入以下代码:
注意函数名的写法:要以“smarty_function_ ” 或者“smarty_modifier_”为前缀,前一种情况是PHP本身没有的函数,后一种是修改PHP本身有的函数!!
<?php

function smarty_function_utf8cut($string, $leng=100, $dot='...') {

if(!isset($string) || $string == '') {

return '';

}

preg_match_all("/.{1}/", $string, $chars);

$c = '';

$all = array();

$timer = 0;

foreach($chars[0] as $char) {

$timer++;

if(ord($char) > 127) {

$c .= $char;

if($timer == 3) {

$all[] = $c;

$c = '';

$timer = 0;

}

} else {

$c = $char;

$timer = 0;

$all[] = $c;

$c = '';

}

}

if(sizeof($all) <= $leng) {

return implode('', $all);

}

return implode('',array_slice($all, 0, $leng)).$dot;

}

?>


复制代码至于这个函数是怎么样截取utf8字符的,自己可以研究一下。Smarty插件函数都要返回一个值的。

好了,现在我们可以使用这个插件了:
index.tpl <html>

<head></head>

<body>

<h2>插件实现</h2>

<p>{$content|utf8cut:20}</p>

</body>

</html>


复制代码可以看见utf8cut就是我们刚才写的函数,冒号后面的是我们的第二个参数(为什么不是第一个,因为第一个是Smarty帮我们自动写入的,就是$content)。如此类推,第三个参数可以这样utf8cut:10:'......';

index.php
<?php

require_once 'smarty/smarty.class.php';

$smarty = new Smarty();

$smarty->assign('content','随意混用PHP 与其他Web 页面标记将导致程序逻辑、HTML、层叠样式表(Cascading Style Sheets,CSS)和JavaScript 处于混乱状态');

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

?>


复制代码输出: 插件实现

随意混用PHP 与其他Web 页面标记将...
复制代码
娱乐休闲专区A 影视预告B 音乐咖啡C 英语阶梯D 生活百科
网页编程专区E AMPZF HTMLG CSSH JSI ASPJ PHPK JSPL MySQLM AJAX
Linux技术区 N 系统管理O 服务器架设P 网络/硬件Q 编程序开发R 内核/嵌入
管理中心专区S 发布网址T 版主议事U 事务处理