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 和 COM
Oct 09 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-1 开始了解php
Jul 03 PHP
php数据库备份还原类分享
Mar 20 PHP
php实现图片添加描边字和马赛克的方法
Dec 10 PHP
php利用scws实现mysql全文搜索功能的方法
Dec 25 PHP
PHP的运行机制与原理(底层)
Nov 16 PHP
学习php设计模式 php实现装饰器模式(decorator)
Dec 07 PHP
CI框架使用composer安装的依赖包步骤与方法分析
Nov 21 PHP
详解PHP安装mysql.so扩展的方法
Dec 31 PHP
PHP7 安装event扩展的实现方法
Oct 08 PHP
ThinkPHP 5.1 跨域配置方法
Oct 11 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
Dec 20 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
thinkphp配置文件路径的实现方法
2016/08/30 PHP
PHP chr()函数讲解
2019/02/11 PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
2020/02/06 PHP
Javascript面象对象成员、共享成员变量实验
2010/11/19 Javascript
禁止ajax缓存获取程序最新数据的方法
2013/11/19 Javascript
PHPExcel中的一些常用方法汇总
2015/01/23 Javascript
JS+CSS实现的简单折叠展开多级菜单效果
2015/09/12 Javascript
Ionic如何实现下拉刷新与上拉加载功能
2016/06/03 Javascript
Vue v2.4中新增的$attrs及$listeners属性使用教程
2018/01/08 Javascript
angular6.0使用教程之父组件通过url传递id给子组件的方法
2018/06/30 Javascript
详解js动态获取浏览器或页面等容器的宽高
2019/03/13 Javascript
微信小程序左滑删除实现代码实例
2019/09/16 Javascript
[06:24]DOTA2 2015国际邀请赛中国区预选赛第二日TOP10
2015/05/27 DOTA
python 切片和range()用法说明
2013/03/24 Python
进一步探究Python中的正则表达式
2015/04/28 Python
django进阶之cookie和session的使用示例
2018/08/17 Python
对Python3 pyc 文件的使用详解
2019/02/16 Python
mac系统下Redis安装和使用步骤详解
2019/07/09 Python
使用Python快乐学数学Github万星神器Manim简介
2019/08/07 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
2020/10/22 Python
Oasis服装官网:时尚女装在线
2020/07/09 全球购物
EntityManager都有哪些方法
2013/11/01 面试题
如何唤起类中的一个方法
2013/11/29 面试题
校园安全检查制度
2014/02/03 职场文书
导购员的岗位职责
2014/02/08 职场文书
书法大赛策划方案
2014/06/04 职场文书
文艺晚会策划方案
2014/06/11 职场文书
图书室标语
2014/06/21 职场文书
普通党员整改措施
2014/10/24 职场文书
暑期社会实践个人总结
2015/03/06 职场文书
小学班主任工作总结2015
2015/04/07 职场文书
2015年乡镇卫生院妇幼保健工作总结
2015/05/19 职场文书
2016学习医德医风心得体会
2016/01/25 职场文书
《7的乘法口诀》教学反思
2016/02/18 职场文书
实现AJAX异步调用和局部刷新的基本步骤
2022/03/17 Javascript
vue el-table实现递归嵌套的示例代码
2022/08/14 Vue.js