建站软件 优化软件 编程软件 网页辅助 站群程序 网站程序 图像处理 资源教程 字体下载 推荐软件


您的位置:首页 > PHP学习 > php怎么获取中文字符长度

php怎么获取中文字符长度

时间:2015-02-15 10:05:28  来源:免费模板网 作者:风雪 阅读次数 tagsphp怎么获取中文字符长度

对于不同编码的中文,系统自带的函数定义是不一样的,怎么解决这问题呢?请看下文

utf-8中文字符占三个字节,GB18030兼容GBK兼容GB2312中文字符占两个字节,ISO8859-1是拉丁字符(ASCII字符)占一个字节
对于文件编码是UTF-8
header(
'Content-type:text/html;charset=utf-8');
/**
* 可以统计中文字符串长度的函数
* @param $str 要计算长度的字符串
* @param $type 计算长度类型,0(默认)表示一个中文算一个字符,1表示一个中文算两个字符
*
*/
function abslength($str)
{
    if(empty($str)){
        return 0;
    }
    if(function_exists('mb_strlen')){
        return mb_strlen($str,'utf-8');
    }
    else {
        preg_match_all("/./u"$str$ar);
        return count($ar[0]);
    }
}
$str '我们都是中国人啊,ye!';
$len = abslength($str);
var_dump($len);  //return 12
$len = abslength($str,'1');
echo '<br />'.$len;  //return 22
 
/*
    utf-8编码下截取中文字符串,参数可以参照substr函数
    @param $str 要进行截取的字符串
    @param $start 要进行截取的开始位置,负数为反向截取
    @param $end 要进行截取的长度
*/
function utf8_substr($str,$start=0) {
    if(empty($str)){
        return false;
    }
    if (function_exists('mb_substr')){
        if(func_num_args() >= 3) {
            $end = func_get_arg(2);
            return mb_substr($str,$start,$end,'utf-8');
        }
        else {
            mb_internal_encoding("UTF-8");
            return mb_substr($str,$start);
        }      
 
    }
    else {
        $null "";
        preg_match_all("/./u"$str$ar);
        if(func_num_args() >= 3) {
            $end = func_get_arg(2);
            return join($nullarray_slice($ar[0],$start,$end));
        }
        else {
            return join($nullarray_slice($ar[0],$start));
        }
    }
}
$str2  'wo要截取zhongwen';
echo '<br />';
echo utf8_substr($str2,0,-4); //return wo要截取zhon

本文地址:https://www.freemoban.com/php/2015/0215/572.html

猜你喜欢
栏目推荐
模板推荐

Copyright:www.freemoban.com 免费模板网 All Rights Reserved 网站备案:辽ICP备19014872号-2   辽公网安备 21010602000376号  辽公网安备:42900402000182号

免责声明:本站部分资源来自互联网收集,版权归原创者所有,如果侵犯了你的权益,我们会及时删除侵权内容,联系QQ:1615187561 谢谢合作!