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去除数组中重复的元素并按键名排序函数
Aug 18 PHP
php中截取中文字符串的代码小结
Jul 17 PHP
做了CDN获取用户真实IP的函数代码(PHP与Asp设置方式)
Apr 13 PHP
php去除换行(回车换行)的三种方法
Mar 26 PHP
Linux中为php配置伪静态
Dec 17 PHP
php接口技术实例详解
Dec 07 PHP
Yii2中简单的场景使用介绍
Jun 02 PHP
PHP中OpenSSL加密问题整理
Dec 14 PHP
Smarty模板变量与调节器实例详解
Jul 20 PHP
Laravel框架控制器,视图及模型操作图文详解
Dec 04 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
Mar 30 PHP
Laravel相关的一些故障解决
Aug 19 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判断正常访问和外部访问的示例
2014/02/10 PHP
使用PHP实现阻止用户上传成人照片或者裸照
2014/12/25 PHP
利用PHP将部分内容用星号替换
2020/04/21 PHP
thinkPHP的表达式查询用法详解
2016/09/14 PHP
JavaScript 定义function的三种方式小结
2009/10/16 Javascript
用jquery中插件dialog实现弹框效果实例代码
2013/11/15 Javascript
JS画线(实例代码)
2013/11/20 Javascript
javascript记录文本框内文字个数检测文字个数变化
2014/10/14 Javascript
兼容各大浏览器的JavaScript阻止事件冒泡代码
2015/07/09 Javascript
理解 JavaScript Scoping &amp; Hoisting(二)
2015/11/18 Javascript
jQuery中$.grep() 过滤函数 数组过滤
2016/11/22 Javascript
详解jQuery简单的表单应用
2016/12/16 Javascript
jQuery实现动态加载select下拉列表项功能示例
2018/05/31 jQuery
使用vue 国际化i18n 实现多实现语言切换功能
2018/10/11 Javascript
使用jquery-easyui的布局layout写后台管理页面的代码详解
2019/06/19 jQuery
基于原生js实现九宫格算法代码实例
2020/07/03 Javascript
PHP读取远程txt文档到数组并实现遍历
2020/08/25 Javascript
[02:09]抵达西雅图!中国军团加油!
2014/07/07 DOTA
[01:37]PWL S2开团时刻DAY1&2——这符有毒
2020/11/20 DOTA
python各种语言间时间的转化实现代码
2016/03/23 Python
Python元字符的用法实例解析
2018/01/17 Python
浅析python实现scrapy定时执行爬虫
2018/03/04 Python
Python 忽略warning的输出方法
2018/10/18 Python
python issubclass 和 isinstance函数
2019/07/25 Python
Python字符编码转码之GBK,UTF8互转
2020/02/09 Python
python 基于opencv 实现一个鼠标绘图小程序
2020/12/11 Python
python里glob模块知识点总结
2021/01/05 Python
清除canvas画布内容(点擦除+线擦除)
2020/08/12 HTML / CSS
C语言笔试题回忆
2015/04/02 面试题
买卖协议书范本
2014/04/21 职场文书
高中学校对照检查材料
2014/08/31 职场文书
暑期培训心得体会
2014/09/02 职场文书
党的群众路线教育实践活动实施方案
2014/10/31 职场文书
2014年社区矫正工作总结
2014/11/18 职场文书
上下班时间调整通知
2015/04/23 职场文书
新闻通讯稿范文
2015/07/22 职场文书