|
源代码网推荐源代码网整理以下PHP中truncate()函数可以截取字符串,但是在遇到中文时结果会出现乱码,下面是一个改进后的函数cn_truncate()可以实现截取中英文字符都不出现乱码问题:
源代码网整理以下
/***
中文字符截取
$string 要处理的字符串
$strlen 截取后字符串长度
$etc 是否出现省略号以表示内容被截断
$keep_first_style 当内容中有html标签时,如“<font>”是否保留,标签不算在字符长度内
****/
function 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;
源代码网整理以下}
函数功能还不是特别完善,希望大家可以改进。 lyx(炫澜冰莹)供稿. |