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 xml文件操作代码(一)
Mar 20 PHP
用mysql触发器自动更新memcache的实现代码
Oct 11 PHP
php引用传值实例详解学习
Nov 06 PHP
用PHP来计算某个目录大小的方法
Apr 01 PHP
学习php设计模式 php实现模板方法模式
Dec 08 PHP
WordPress中用于更新伪静态规则的PHP代码实例讲解
Dec 18 PHP
php面向对象编程self和static的区别
May 08 PHP
PHP用FTP类上传文件视频等的简单实现方法
Sep 23 PHP
利用PHPExcel实现Excel文件的写入和读取
Apr 26 PHP
详解PHP防止直接访问.php 文件的实现方法
Jul 28 PHP
Thinkphp5 自定义上传文件名的实现方法
Jul 23 PHP
PHP-FPM 设置多pool及配置文件重写操作示例
Oct 02 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
yii框架源码分析之创建controller代码
2011/06/28 PHP
PHP依赖倒置(Dependency Injection)代码实例
2014/10/11 PHP
php+mysql数据库查询实例
2015/01/21 PHP
PHP中的事务使用实例
2015/05/26 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
2020/03/30 PHP
php中yar框架实例用法讲解
2020/12/27 PHP
加速IE的Javascript document输出的方法
2010/12/02 Javascript
浅析jQuery对select操作小结(遍历option,操作option)
2013/07/04 Javascript
Javascript表格翻页效果的具体实现
2013/10/05 Javascript
jquery实现滑动图片自己测试的例子
2013/11/05 Javascript
jQuery子元素过滤选择器用法示例
2016/09/09 Javascript
JavaScript实现数组降维详解
2017/01/05 Javascript
详解Sea.js中Module.exports和exports的区别
2017/02/12 Javascript
Node.js JSON模块用法实例分析
2019/01/04 Javascript
小程序如何获取多个formId实现详解
2019/09/20 Javascript
js实现计时器秒表功能
2019/12/16 Javascript
JavaScript实现简单进度条效果
2020/03/25 Javascript
django 在原有表格添加或删除字段的实例
2018/05/27 Python
python并发编程 Process对象的其他属性方法join方法详解
2019/08/20 Python
python库matplotlib绘制坐标图
2019/10/18 Python
numpy ndarray 取出满足特定条件的某些行实例
2019/12/05 Python
TensorFlow获取加载模型中的全部张量名称代码
2020/02/11 Python
Python如何使用27行代码绘制星星图
2020/07/20 Python
Python爬虫基于lxml解决数据编码乱码问题
2020/07/31 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
2020/12/24 Python
日本最大的药妆连锁店:Matsukiyo松本清药妆店
2017/11/23 全球购物
英国和世界各地预订便宜的酒店:LateRooms.com
2019/05/05 全球购物
学雷锋月活动总结
2014/04/25 职场文书
房屋转让协议书
2014/10/18 职场文书
会计电算化实训报告
2014/11/04 职场文书
2015年迎新晚会策划书
2015/07/16 职场文书
python使用pygame创建精灵Sprite
2021/04/06 Python
gateway网关接口请求的校验方式
2021/07/15 Java/Android
MySQL 外连接语法之 OUTER JOIN
2022/04/09 MySQL
tree shaking对打包体积优化及作用
2022/07/07 Java/Android
Python  序列化反序列化和异常处理的问题小结
2022/12/24 Python