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 相关文章推荐
在普通HTTP上安全地传输密码
Jul 21 PHP
php 日期时间处理函数小结
Dec 18 PHP
免费手机号码归属地API查询接口和PHP使用实例分享
Apr 10 PHP
CodeIgniter实现更改view文件夹路径的方法
Jul 04 PHP
PHP统计目录大小的自定义函数分享
Nov 18 PHP
php模拟post提交数据的方法
Feb 12 PHP
在WordPress中实现评论头像的自定义默认和延迟加载
Nov 24 PHP
PHP简单读取xml文件的方法示例
Apr 20 PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
Jun 05 PHP
PHP XML Expat解析器知识点总结
Feb 15 PHP
Yii框架参数配置文件params用法实例分析
Sep 11 PHP
thinkphp5 模型实例化获得数据对象的教程
Oct 18 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
PHP实现搜索相似图片
2015/09/22 PHP
作为PHP程序员你要知道的另外一种日志
2018/07/30 PHP
符合W3C网页标准的iframe标签的使用方法
2007/07/19 Javascript
js运动框架_包括图片的淡入淡出效果
2013/05/11 Javascript
js 中将多个逗号替换为一个逗号的代码
2014/06/07 Javascript
JavaScript删除数组元素的方法
2015/03/20 Javascript
浅析JavaScript访问对象属性和方法及区别
2015/11/16 Javascript
限制复选框最多选择项的实现代码
2016/05/30 Javascript
JS中的==运算: [''] == false —&gt;true
2016/07/24 Javascript
nodeJS微信分享
2017/12/20 NodeJs
使用微信小程序开发弹出框应用实例详解
2018/10/18 Javascript
ElementUI多个子组件表单的校验管理实现
2019/11/07 Javascript
微信小程序中使用 async/await的方法实例分析
2020/05/06 Javascript
Threejs实现滴滴官网首页地球动画功能
2020/07/13 Javascript
Python获取脚本所在目录的正确方法
2014/04/15 Python
Python深入学习之内存管理
2014/08/31 Python
PyCharm使用教程之搭建Python开发环境
2016/06/07 Python
Python 实现随机数详解及实例代码
2017/04/15 Python
使用selenium模拟登录解决滑块验证问题的实现
2019/05/10 Python
python3.6编写的单元测试示例
2019/08/17 Python
分享8点超级有用的Python编程建议(推荐)
2019/10/13 Python
Python基于Tensor FLow的图像处理操作详解
2020/01/15 Python
TensorFlow 显存使用机制详解
2020/02/03 Python
使用 Python 在京东上抢口罩的思路详解
2020/02/27 Python
python 还原梯度下降算法实现一维线性回归
2020/10/22 Python
python实现MySQL指定表增量同步数据到clickhouse的脚本
2021/02/26 Python
纯css实现照片墙3D效果的示例代码
2017/11/13 HTML / CSS
使用HTML和CSS实现的标签云效果(附demo)
2021/02/03 HTML / CSS
蔻驰美国官网:COACH美国
2016/08/18 全球购物
Bailey帽子官方商店:Bailey Hats
2018/09/25 全球购物
乡镇领导干部个人对照检查材料思想汇报
2014/09/23 职场文书
盗窃案辩护词
2015/05/21 职场文书
2015年党总支工作总结
2015/05/25 职场文书
五年级数学教学反思
2016/02/16 职场文书
python 爬取天气网卫星图片
2021/06/07 Python
Nginx内网单机反向代理的实现
2021/11/07 Servers