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的cURL快速入门教程 (小偷采集程序)
Jun 02 PHP
用PHP+MySQL搭建聊天室功能实例代码
Aug 20 PHP
php中0,null,empty,空,false,字符串关系的详细介绍
Jun 20 PHP
destoon在360浏览器下出现用户被强行注销的解决方法
Jun 26 PHP
Linux下安装PHP MSSQL扩展教程
Oct 24 PHP
PHP多文件上传类实例
Mar 07 PHP
php实现用手机关闭计算机(电脑)的方法
Apr 22 PHP
PHP实现远程下载文件到本地
May 17 PHP
ThinkPHP设置禁止百度等搜索引擎转码(简单实用)
Feb 15 PHP
基于laravel制作APP接口(API)
Mar 15 PHP
PHP入门教程之面向对象基本概念实例分析
Sep 11 PHP
PHP Cli 模式设置进程名称的方法
Jun 12 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 session和cookie使用说明
2010/04/07 PHP
基于session_unset与session_destroy的区别详解
2013/06/03 PHP
Linux下PHP安装mcrypt扩展模块笔记
2014/09/10 PHP
Yii的CDbCriteria查询条件用法实例
2014/12/04 PHP
php+mysql实现用户注册登陆的方法
2015/01/03 PHP
PHP处理bmp格式图片的方法分析
2017/07/04 PHP
用js实现预览待上传的本地图片
2007/03/15 Javascript
div模拟选择框示例代码
2013/11/03 Javascript
jQuery实现的输入框选择时间插件用法实例
2015/02/28 Javascript
javascript给span标签赋值的方法
2015/11/26 Javascript
JavaScrip常见的一些算法总结
2015/12/28 Javascript
AngularJS 中的指令实践开发指南(一)
2016/03/20 Javascript
基于MVC+EasyUI的web开发框架之使用云打印控件C-Lodop打印页面或套打报关运单信息
2016/08/29 Javascript
Javascript生成带参数的二维码示例
2016/10/10 Javascript
vue生成文件本地打开查看效果的实例
2018/09/06 Javascript
微信小程序实现多行文字超出部分省略号显示功能
2019/10/23 Javascript
vue.js封装switch开关组件的操作
2020/10/26 Javascript
原生js实现弹幕效果
2020/11/29 Javascript
在Python的循环体中使用else语句的方法
2015/03/30 Python
在Python的Flask框架下收发电子邮件的教程
2015/04/21 Python
深入浅析Python字符编码
2015/11/12 Python
Python 探针的实现原理
2016/04/23 Python
Python3中的列表,元组,字典,字符串相关知识小结
2017/11/10 Python
Linux下python与C++使用dlib实现人脸检测
2018/06/29 Python
python web框架 django wsgi原理解析
2019/08/20 Python
浅谈Python的方法解析顺序(MRO)
2020/03/05 Python
python实现杨辉三角的几种方法代码实例
2021/03/02 Python
迪卡侬英国官网:Decathlon英国
2017/04/08 全球购物
凯撒娱乐:Caesars Entertainment
2018/02/23 全球购物
伦敦剧院门票:From The Box Office
2018/06/30 全球购物
个人委托书
2014/07/31 职场文书
2015年班组建设工作总结
2015/05/13 职场文书
2015年服务员个人工作总结
2015/05/27 职场文书
在前女友婚礼上,用Python破解了现场的WIFI还把名称改成了
2021/05/28 Python
MySQL分区表实现按月份归类
2021/11/01 MySQL
mysql中varchar类型的日期进行比较、排序等操作的实现
2021/11/17 MySQL