您好,欢迎访问一九零五行业门户网

php 截取中文字符串实现程序

在php中我们截取字符串可以使用自带的函数,但是自带的函数不支持中文截取,如果需要截取中文字符串我们需要现做一些操作,下面我来给各位朋友介绍。
针对gb2312的代码
 代码如下 复制代码
//$str是要截取的字符串
//$start是要截取的字符的开始位置
//$len是指要截取的字符长度
function sub_str($str, $start, $len) {
        $tmpstr = ;
        $strlen = $start + $len;
        for($i = 0; $i             if(ord(substr($str, $i, 1)) > 0xa0) {
                $tmpstr .= substr($str, $i, 2);
                $i++;
            } else
                $tmpstr .= substr($str, $i, 1);
        }
        return $tmpstr....;
}
针对uft8
 代码如下 复制代码
上面的方法肯定不实用,因为我希望可以自动识别支持任何编码的字符串截取,后来找到一个还算可以的分享给各位朋友。
 代码如下 复制代码
/**
 * @package     bugfree
 * @version     $id: functionsmain.inc.php,v 1.32 2005/09/24 11:38:37 wwccss exp $
 *
 *
 * return part of a string(enhance the function substr())
 *
 * @author                  chunsheng wang
 * @param string  $string  the string to cut.
 * @param int     $length  the length of returned string.
 * @param booble  $append  whether append ...: false|true
 * @return string           the cutted string.
 */
function syssubstr($string,$length,$append = false)
{
    if (strlen($string)     {
        return $string;
    }
    else
    {
        $i = 0;
        while ($i         {
            $stringtmp = substr($string,$i,1);
            if ( ord($stringtmp) >=224 )
            {
                $stringtmp = substr($string,$i,3);
                $i = $i + 3;
            }
            elseif( ord($stringtmp) >=192 )
            {
                $stringtmp = substr($string,$i,2);
                $i = $i + 2;
            }
            else
            {
                $i = $i + 1;
            }
            $stringlast[] = $stringtmp;
        }
        $stringlast = implode(,$stringlast);
        if($append)
        {
            $stringlast .= ...;
        }
        return $stringlast;
    }
}
$string = www.111cn.net 走在中国自动化测试的前沿;
$length = 18;
$append = false;
echo syssubstr($string,$length,$append);
?>
其它类似信息

推荐信息