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; } ?>