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实现的获取URL信息的类
Jan 02 PHP
PHP中防止SQL注入攻击和XSS攻击的两个简单方法
Apr 15 PHP
php header Content-Type类型小结
Jul 03 PHP
php while循环得到循环次数
Oct 26 PHP
PHP 正则判断中文UTF-8或GBK的思路及具体实现
Nov 26 PHP
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
Aug 18 PHP
php运行提示:Fatal error Allowed memory size内存不足的解决方法
Dec 17 PHP
PHP获取毫秒级时间戳的方法
Apr 15 PHP
详解HTTP Cookie状态管理机制
Jan 14 PHP
php实现批量删除挂马文件及批量替换页面内容完整实例
Jul 08 PHP
PHP数据库表操作的封装类及用法实例详解
Jul 12 PHP
php多线程并发实现方法
Sep 30 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
php5 pdo新改动加载注意事项
2008/09/11 PHP
php 中文字符入库或显示乱码问题的解决方法
2010/04/12 PHP
PHP下对字符串的递增运算代码
2010/08/21 PHP
php 生成文字png图片的代码
2011/04/17 PHP
php截取后台登陆密码的代码
2012/05/05 PHP
ThinkPHP5.0多个文件上传后找不到临时文件的修改方法
2018/07/30 PHP
JavaScript下申明对象的几种方法小结
2008/10/02 Javascript
动态标签 悬停效果 延迟加载示例代码
2013/11/21 Javascript
javascript中数组的多种定义方法和常用函数简介
2014/05/09 Javascript
详解js图片轮播效果实现原理
2015/12/17 Javascript
this,this,再次讨论javascript中的this,超全面(经典)
2016/01/05 Javascript
JS锚点的设置与使用方法
2016/09/05 Javascript
微信小程序 跳转传递数据的实例
2017/07/06 Javascript
vue组件中使用iframe元素的示例代码
2017/12/13 Javascript
Angular实现可删除并计算总金额的购物车功能示例
2017/12/26 Javascript
Bootstrap的aria-label和aria-labelledby属性实例详解
2018/11/02 Javascript
基于React Native 0.52实现轮播图效果
2020/08/25 Javascript
Vue开发之watch监听数组、对象、变量操作分析
2019/04/25 Javascript
微信小程序基于movable-view实现滑动删除效果
2020/01/08 Javascript
Vue组件生命周期运行原理解析
2020/11/25 Vue.js
PyQt5实现拖放功能
2018/04/25 Python
python实现的批量分析xml标签中各个类别个数功能示例
2019/12/30 Python
python使用paramiko实现ssh的功能详解
2020/03/06 Python
python集合能干吗
2020/07/19 Python
Python+logging输出到屏幕将log日志写入文件
2020/11/11 Python
利用python实现汉诺塔游戏
2021/03/01 Python
HTML5 body设置自适应全屏
2020/05/07 HTML / CSS
世界上最全面的汽车零部件和配件集合:JC Whitney
2016/09/04 全球购物
Joseph官网:英国小众奢侈品牌
2019/05/17 全球购物
护士自我介绍信
2014/01/13 职场文书
护士找工作求职信
2014/07/02 职场文书
服务承诺书
2015/01/19 职场文书
部门主管竞聘书
2015/09/15 职场文书
子女赡养老人协议书
2016/03/23 职场文书
基于Python和openCV实现图像的全景拼接详细步骤
2021/10/05 Python
JavaScript 对象创建的3种方法
2021/11/17 Javascript