Bookmark and Share

Lee's 程序人生

HTML CSS Javascript XML AJAX ATLAS C# C++ 数据结构 软件工程 设计模式 asp.net Java 数字图象处理 Sql 数据库
  博客园  :: 首页  :: 新随笔  :: 联系 :: 管理

Utf-8、gb2312都支持的汉字截取

Posted on 2007-08-08 07:31  analyzer  阅读(292)  评论(0编辑  收藏  举报
<?php

/***************************************************************************
 *            cut_string.php
 *        ------------------------------
 *    Date        : Jul 16, 2005
 *    Copyright    : none
 *    Mail        : 
 *
 *    作用:截取中文字符.
 *
 *
 ***************************************************************************/

function cut_str($string$sublen$start 0$code 'UTF-8')
{
    if(
$code == 'UTF-8')
    {
        
$pa "/[x01-x7f]|[xc2-xdf][x80-xbf]|xe0[xa0-xbf][x80-xbf]|[xe1-xef][x80-xbf][x80-xbf]|xf0[x90-xbf][x80-xbf][x80-xbf]|[xf1-xf7][x80-xbf][x80-xbf][x80-xbf]/";
        
preg_match_all($pa$string$t_string);

        if(
count($t_string[0]) - $start $sublen) return join(''array_slice($t_string[0], $start$sublen))."...";
        return 
join(''array_slice($t_string[0], $start$sublen));
    }
    else
    {
        
$start  $start*2;
        
$sublen $sublen*2;
        
$strlen strlen($string);
        
$tmpstr '';
        for(
$i=0$i<$strlen$i++)
        {
            if(
$i>=$start && $i<($start+$sublen))
            {
            if(
ord(substr($string$i1))>129$tmpstr.= substr($string$i2);
            else 
$tmpstr.= substr($string$i1);
            } 
            if(
ord(substr($string$i1))>129$i++;
        }
        if(
strlen($tmpstr)<$strlen $tmpstr.= "...";
        return 
$tmpstr;
    }
}

?>

cut_str(字符串,  截取长度,  开始长度, 编码);
编码默认为 utf-8
开始长度默认为 0

我要啦免费统计