thinkphp前台模版字符串截取

转载自:http://blog.21514.com/archives/269
ThinkPHP\Common\extend.php 中管理前台模版的截取{$vons.title|msubstr=0,26}
原始的代码是无法使用截取支持…. 由于涉及到只有汉字检测最为准确
需要加入代码让他正常的分页截取之后加入…

function msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true)
{
	if(strlen($str)/3>$length)
	{
		if(function_exists("mb_substr"))	
		{
			return mb_substr($str, $start, $length, $charset).'…';
		}
		elseif(function_exists('iconv_substr')) 
		{
			return iconv_substr($str,$start,$length,$charset).'…';
		}
		$re['utf-8']   	= 	"/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";
		$re['gb2312'] 	= 	"/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";
		$re['gbk']    	= 	"/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";
		$re['big5']   	= 	"/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";
		preg_match_all($re[$charset], $str, $match);
		$slice 			= 	join("",array_slice($match[0], $start, $length));
		if($suffix)
		{
			return $slice;
		}
		else
		{
			return $slice;
		}
	}
	return $str;
}

Related posts:

Leave a Reply

Your email address will not be published.