header(\'Content-type:text/html;charset=utf-8\');
/**
* 可以统计中文字符串长度的函数
* @param $str 要计算长度的字符串
* @param $type 计算长度类型,0(默认)表示一个中文算一个字符,1表示一个中文算两个字符
*
*/
functionabslength($str)
{
if(empty($str)){
return0;
}
if(function_exists(\'mb_strlen\')){
returnmb_strlen($str,\'utf-8\');
}
else{
preg_match_all("/./u",$str,$ar);
returncount($ar[0]);
}
}
$str=\'我们都是中国人啊,ye!\';
$len= abslength($str);
var_dump($len);//return 12
$len= abslength($str,\'1\');
echo\'
\'.$len;//return 22
/*
utf-8编码下截取中文字符串,参数可以参照substr函数
@param $str 要进行截取的字符串
@param $start 要进行截取的开始位置,负数为反向截取
@param $end 要进行截取的长度
*/
functionutf8_substr($str,$start=0) {
if(empty($str)){
returnfalse;
}
if(function_exists(\'mb_substr\')){
if(func_num_args() >= 3) {
$end= func_get_arg(2);
returnmb_substr($str,$start,$end,\'utf-8\');
}
else{
mb_internal_encoding("UTF-8");
returnmb_substr($str,$start);
}
}
else{
$null="";
preg_match_all("/./u",$str,$ar);
if(func_num_args() >= 3) {
$end= func_get_arg(2);
returnjoin($null,array_slice($ar[0],$start,$end));
}
else{
returnjoin($null,array_slice($ar[0],$start));
}
}
}
$str2=\'wo要截取zhongwen\';
echo\'
\';
echoutf8_substr($str2,0,-4);//return wo要截取zhon