php smarty函数扩展 |
本文标签:php,smarty 中文截取 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); } |