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 smarty函数扩展
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@