php smarty函数扩展
author:一佰互联 2019-04-30   click:176
中文截取 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);
}