当前位置:首页 > 网络编程 > WEB编程 > PHP > PHP截取中文字符串不出现乱码的函数

PHP截取中文字符串不出现乱码的函数

点击次数:140 次 发布日期:2008-11-03 10:51:25 作者:lyx(炫澜冰莹)
源代码网推荐

源代码网整理以下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(炫澜冰莹)供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华