function left($str, $len, $charset="utf-8")
{
if( !is_numeric($len) or $len < = 0)//如果截取长度小于等于
{
return ""; //返回空
}
$sLen = strlen($str); //获取原始字串长度
if( $len >= $sLen ) //如果截取长度大于总字符串长度
{
return $str; //直接返回当前字符串
}
if ( strtolower($charset) == "utf-8" ) //如果编码为为utf-8
{
$len_step = 3; //则中文字符长度为3
}
else //如果不是
{
$len_step = 2; //如果是gb2312或big5编码,则中文字符长度为2
}
//执行截取操作
$len_i = 0; //初始化计数当前已截取的字符串个数,此值为字符串的个数值
$substr_len = 0; //初始化应该要截取的总字节数
for( $i=0; $i < $sLen; $i++ ) //开始循环
{
if ( $len_i >= $len ) break; //总截取$len个字符串后,停止循环
if( ord(substr($str,$i,1)) > 0xa0 ) //如果是中文字符串
{
$i += $len_step - 1; //
$substr_len += $len_step; //当前总字节数加上相应编码的中文字符长度
}
else //如果字符不是中文
{
$substr_len ++; //加1个字节
}
$len_i ++; //已经截取字符串个数增加
}
$result_str = substr($str,0,$substr_len ); //获取结果
return $result_str; //返回结果
}
php中文字符串截取函数
未经允许不得转载:枫叶博客 » php中文字符串截取函数
对字符串和数组操作真是有点麻烦
呵呵,特别是中文。很容易出问题