中英文字符串求长度、截取问题

来源:互联网 发布:vscode eslint 编辑:程序博客网 时间:2024/05/18 14:26
/**
 * 求中英文混合字符串的长度
 * @param 字符串 $str
 * @return 长度 $number
 */
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]);
    }
}

/**
 * utf-8编码下截取中文字符串
 * @param 要进行截取的字符串 $str
 * @param 字符串开始位置  $start
 * @return 截取完成的字符串
 */
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($null, array_slice($ar[0],$start,$end));
        }
        else {
            return join($null, array_slice($ar[0],$start));
        }
    }
}
0 0
原创粉丝点击