代码:
function substr_len($str, $len, $charset='utf-8'){
$len = intval($len);
if(!is_numeric($len) || $len < 0){
return false;
}
$str_len = strlen($str);
if($len >= $str_len){
return $str;
}
if($charset == 'utf-8'){
$char_step = 3;
}else{
$char_step = 2;
}
$substr_i = 0;//截取长度
$act_substr = 0;
for($i = 0; $i < $str_len; $i++){
if($substr_i >= $len){
break;
}
$sub_val = substr($str, $i, 1);
if(ord($sub_val) > 0xa0){
$i += $char_step - 1;
$act_substr += $char_step;
}else{
$act_substr ++;
}
$substr_i++;
}
$result_str = substr($str, 0, $act_substr);
return $result_str;
}
一、中文截取:mb_substr()
mb_substr( $str, $start, $length, $encoding )
$str,需要截断的字符串
$start,截断开始处,起始处为0
$length,要截取的字数
$encoding,网页编码,如utf-8,GB2312,GBK
实例:
<?php
$str='云栖社区:http://www.jb51.net';
echo mb_substr($str,0,4,'utf-8');//截取头5个字,假定此代码所在php文件的编码为utf-8
?>
结果显示:云栖社区
二、获取中文长度:mb_strlen()
mb_strlen( $str, $encoding )
$str,要计算长度的字符串
$encoding,网页编码,如utf-8,GB2312,GBK
实例:
<?php
$str='脚本之家:http://www.jb51.net';
echo mb_strlen($str,'utf-8');//假定此代码所在php文件的编码为utf-8
?>
结果显示:24
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。