gusucode.com > 同城苏州黄页系统php源码程序 > lib/smarty/plugins/modifier.fixstr.php

    <?
/*
字符截取函数,
第一个参数是需要截取的字符,第二个参数是保留长度。
多余的字符会被截取,并用省略号替代,替代后中长度不超过第二个参数指定长度
*/
function smarty_modifier_fixstr($str,$len,$ifQuote=false,$charlen=3)
{
	$strlen=strlen($str);

	$char=array();		// 字符数组
	$idx=0;				// 字节指针
	$w=0;

	// 超过规定字串宽度,或超过字节的总长度,停止循环
	while($idx<$strlen)
	{
		$chr=$str[$idx];
		if(ord($chr)<0x80)
		{
			$idx++;
			$w++;
			$char[]=$chr;
		}			
		else
		{
			$idx+=$charlen;
			$w+=2;
			$char[]=substr($str,$idx-3,3);
		}

		if($w>$len)
			break;
	}

	if($w<=$len)
		return implode("",$char);

	$w=$w-strlen($char[count($char)-1]);
	// 删除 最后一个字符
	unset($char[count($char)-1]);
	if( ($sub=$len-$w)<2 and $ifQuote )
	{
		$w=$w-strlen($char[count($char)-1]);
		// 再 删除一个字符
		unset($char[count($char)-1]);
		$sub=$len-$w;
	}

	$str=implode("",$char);
	
	if( $ifQuote )
		$str.=str_repeat(".",$sub);

	return $str;
}
?>