php smarty函数扩展


Posted in PHP onMarch 15, 2010

中文截取 modifier.cn_truncate.php

function smarty_modifier_cn_truncate($string, $strlen = 20, $etc = '...', 
$keep_first_style = false) 
{ 
$strlen = $strlen*2; 
$string = trim($string); 
if ( strlen($string) <= $strlen ) { 
return $string; 
} 
$str = strip_tags($string); 
$j = 0; 
for($i=0;$i<$strlen;$i++) { 
if(ord(substr($str,$i,1))>0xa0) $j++; 
} 
if($j%2!=0) $strlen++; 
$rstr=substr($str,0,$strlen); 
if (strlen($str)>$strlen ) {$rstr .= $etc;} 
if ( $keep_first_style == true && ereg('^<(.*)>$',$string) ) { 
if ( strlen($str) <= $strlen ) { 
return $string; 
} 
$start_pos = strpos($string,substr($str,0,4)); 
$end_pos = strpos($string,substr($str,-4)); 
$end_pos = $end_pos+4; 
$rstr = substr($string,0,$start_pos) . $rstr . substr($string,$end_pos,strlen($string)); 
} 
return $rstr; 
}

modifier.ubb.php
<?php 
function smarty_modifier_ubb($str) { 
$ubbs['quote'][0] = '/\[quote\](.*?)\[\/quote\]/s'; 
$ubbs['quote'][1] = '<blockquote>引用:<hr size=1>\1<hr size=1></blockquote>'; 
$ubbs['b'][0] = '/\[b\](.*?)\[\/b\]/s'; 
$ubbs['b'][1] = '<b>\1</b>'; 
$ubbs['i'][0] = '/\[i\](.*?)\[\/i\]/s'; 
$ubbs['i'][1] = '<i>\1</i>'; 
$ubbs['u'][0] = '/\[u\](.*?)\[\/u\]/s'; 
$ubbs['u'][1] = '<u>\1</u>'; 
$ubbs['li'][0] = '/\[li\](.*?)\[\/li\]/s'; 
$ubbs['li'][1] = '<li>\1</li>'; 
$ubbs['img'][0] = '/\[img\](.*?)\[\/img\]/s'; 
$ubbs['img'][1] = '<img border="0" src="\1">'; 
$ubbs['img2'][0] = '/\[img=([^,]+),([^\]]+)\](.*?)\[\/img\]/s'; 
$ubbs['img2'][1] = '<img border="0" width="\1" height="\2" src="\3">'; 
$ubbs['url'][0] = '/\[url\](.*?)\[\/url\]/s'; 
$ubbs['url'][1] = '<a href="\1" target="_blank">\1</a>'; 
$ubbs['url2'][0] = '/\[url=([^\]]+)\](.*?)\[\/url\]/s'; 
$ubbs['url2'][1] = '<a href="\1" target="_blank">\2</a>'; 
$ubbs['email'][0] = '/\[email=([^\]]+)\](.*?)\[\/email\]/s'; 
$ubbs['email'][1] = '<a href="mailto:\2">\2</a>'; 
$ubbs['qq'][0] = '/\[qq\]([0-9]{5,10})\[\/qq\]/s'; 
$ubbs['qq'][1] = '<a target="new" href="tencent://message/?uin=\1&Site=www.52515.net&Menu=yes"><img border="0" src="http://wpa.qq.com/pa?p=1:\1:\1" alt="点击这里给我发消息"></a>'; 
$ubbs['color'][0] = '/\[color=([^\]]+)\](.*?)\[\/color\]/s'; 
$ubbs['color'][1] = '<font color="\1">\2'; 
$ubbs['font'][0] = '/\[font=([^\]]+)\](.*?)\[\/font\]/s'; 
$ubbs['font'][1] = '<font face="\1">\2'; 
$ubbs['size'][0] = '/\[size=([0-9]+)\](.*?)\[\/size\]/s'; 
$ubbs['size'][1] = '<font size="\1" style="line-height:\1em;">\2'; 
$ubbs['sizept'][0] = '/\[size=([0-9,pt]+)\](.*?)\[\/size\]/s'; 
$ubbs['sizept'][1] = '<font style="font-size:\1">\2'; 
$ubbs['align'][0] = '/\[align=([^\]]+)\](.*?)\[\/align\]/s'; 
$ubbs['align'][1] = '<div align="\1">\2'; 
$ubbs['media'][0] = '/\[media\](.*?)\[\/media\]/s'; 
$ubbs['media'][1] = '<embed src="\1"></embed>'; 
$ubbs['list'][0] = '/\[list\](.*?)\[\/list\]/s'; 
$ubbs['list'][1] = '<ul>\1</ul>'; 
$ubbs['list2'][0] = '/\[list=([0-9]+)\](.*?)\[\/list\]/s'; 
$ubbs['list2'][1] = '<ol>\2</ol>'; 
$ubbs['indent'][0] = '/\[indent\](.*?)\[\/indent\]/s'; 
$ubbs['indent'][1] = '<div style="text-indent: 20px;">\1'; 
$ubbs['table'][0] = '/\[table([=,0-9,%]*)\](.*?)\[\/table\]/s'; 
$ubbs['table'][1] = '<table style="border:#0099FF 1px dotted;border-right-width:0px; border-top-width:0px;">\2'; 
$ubbs['tr'][0] = '/\[tr\](.*?)\[\/tr\]/s'; 
$ubbs['tr'][1] = '<tr>\1'; 
$ubbs['td'][0] = '/\[td\](.*?)\[\/td\]/s'; 
$ubbs['td'][1] = '<td style="border:#0099FF 1px dotted; border-left-width:0px; border-bottom-width:0px;"> \1'; 
$ubbs['td2'][0] = '/\[td([^(\]|\[)]+)\](.*?)\[\/td\]/s'; 
$ubbs['td2'][1] = '<td style="border:#0099FF 1px dotted; border-left-width:0px; border-bottom-width:0px;"> \2'; 
$str = str_replace('[*]','<li>',$str); 
foreach ($ubbs as $ubb){ 
$str = ubb_replace($ubb[0],$ubb[1],$str); 
} 
return $str; 
} 
function ubb_replace($pattern,$replacement,$str){ 
do { 
$str_ret = $str; 
$str = preg_replace($pattern,$replacement,$str); 
}while($$str); 
return $str_ret; 
} 
?>

编码 modifier.unescape.php
function smarty_modifier_unescape($str) 
{ 
$str = rawurldecode($str); 
preg_match_all("/(?:%u.{4})|[^%]+/",$str,$r); 
$ar = $r[0]; 
foreach($ar as $k=>$v) { 
if(substr($v,0,2) == "%u" && strlen($v) == 6) 
$ar[$k] = iconv("UCS-2","GB2312",@pack("H4",substr($v,-4))); 
} 
return join("",$ar); 
}
PHP 相关文章推荐
PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据
Apr 09 PHP
PHP中ini_set和ini_get函数的用法小结
Feb 18 PHP
PHP小技巧之函数重载
Jun 02 PHP
ThinkPHP模板中判断volist循环的最后一条记录的验证方法
Jul 01 PHP
php检测数组长度函数sizeof与count用法
Nov 17 PHP
php实现无限级分类查询(递归、非递归)
Mar 10 PHP
ThinkPHP连接Oracle数据库
Apr 22 PHP
php中实现进程锁与多进程的方法
Sep 18 PHP
Yii框架数据模型的验证规则rules()被执行的方法
Dec 02 PHP
Docker配置PHP开发环境教程
Dec 21 PHP
PHP实现微信红包金额拆分试玩的算法示例
Apr 07 PHP
PHP实现的AES 128位加密算法示例
Sep 16 PHP
php Smarty date_format [格式化时间日期]
Mar 15 #PHP
libmysql.dll与php.ini是否真的要拷贝到c:\windows目录下呢
Mar 15 #PHP
php下获取客户端ip地址的函数
Mar 15 #PHP
PHP 模拟$_PUT实现代码
Mar 15 #PHP
php Xdebug 调试扩展的安装与使用.
Mar 13 #PHP
php5 non-thread-safe和thread-safe这两个版本的区别分析
Mar 13 #PHP
php 无法载入mysql扩展
Mar 12 #PHP
You might like
《超神学院》霸气归来, 天使彦上演维多利亚的秘密
2020/03/02 国漫
php实现背景图上添加圆形logo图标的方法
2016/11/17 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
2018/06/10 PHP
javascript游戏开发之《三国志曹操传》零部件开发(三)情景对话中仿打字机输出文字
2013/01/23 Javascript
Jquery增加鼠标中间功能mousewheel的实例代码
2013/09/05 Javascript
jquery自动填充勾选框即把勾选框打上true
2014/03/24 Javascript
uploadify多文件上传参数设置技巧
2015/11/16 Javascript
jQuery与Ajax以及序列化
2016/02/01 Javascript
Bootstrap每天必学之响应式导航、轮播图
2016/04/25 Javascript
jQuery元素属性操作实例(设置、获取及删除元素属性)
2016/09/08 Javascript
老生常谈JavaScript中的this关键字
2016/10/01 Javascript
基于JavaScript实现购物车功能
2017/02/07 Javascript
gulp加批处理(.bat)实现ng多应用一键自动化构建
2017/02/16 Javascript
浅谈javascript的url参数parse和build函数
2017/03/04 Javascript
Vue仿手机qq的实例代码(demo)
2017/09/08 Javascript
原生JavaScript实现todolist功能
2018/03/02 Javascript
在vue项目中,使用axios跨域处理
2018/03/07 Javascript
p5.js 毕达哥拉斯树的实现代码
2018/03/23 Javascript
jquery层次选择器的介绍
2019/01/18 jQuery
[03:38]2014DOTA2西雅图国际邀请赛 VG战队巡礼
2014/07/07 DOTA
[46:44]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
介绍Python的Urllib库的一些高级用法
2015/04/30 Python
Python3利用SMTP协议发送E-mail电子邮件的方法
2017/09/30 Python
用Python登录好友QQ空间点赞的示例代码
2017/11/04 Python
python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法
2020/02/26 Python
Selenium webdriver添加cookie实现过程详解
2020/08/12 Python
jupyter notebook快速入门及使用详解
2020/11/13 Python
Python Selenium库的基本使用教程
2021/01/04 Python
美国在线精品家居网站:Burke Decor
2017/04/12 全球购物
大三预备党员入党思想汇报
2014/01/08 职场文书
结婚保证书范文
2014/04/29 职场文书
煤矿安全演讲稿
2014/05/09 职场文书
纪念九一八事变演讲稿:勿忘国耻
2014/09/14 职场文书
医院2014国庆节活动策划方案
2014/09/21 职场文书
李强优秀员工观后感
2015/06/16 职场文书
Golang ort 中的sortInts 方法
2022/04/24 Golang