计算中文混合字符串长度(一)

简介:

计算包含中文的混合字符串长度,一个中文、英文、数字 均为 1

function resolveContainCn($string, $charset = 'utf-8')
{
    if ($string == '') {
        return '';
    }
         
    if ($charset == 'utf-8') {
        $pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/";
    }
    else {
        $pa = "/[\x01-\x7f]|[\xa1-\xff][\xa1-\xff]/";
    }
    $matches = array();
    preg_match_all($pa, $string, $matches);
    return $matches[0];
}
function strlenCn($string, $charset = 'utf-8')
{
    if (function_exists('mb_strlen')) {
        return mb_strlen($string, $charset);
    }
    return count(resolveContainCn($string, $charset));
}
$str = 'abcd计算字符串长度12345';
echo $str;
echo '<br>';
echo strlenCn($str); // 16


目录
相关文章
给定一个正整数N,将其表示为数字1,3,7,15相加的形式输出。请编码找出使上述数字出现的总次数最少(每个数字可以重复使用)的组合。
给定一个正整数N,将其表示为数字1,3,7,15相加的形式输出。请编码找出使上述数字出现的总次数最少(每个数字可以重复使用)的组合。
|
6月前
|
JavaScript 搜索推荐
js 混合排序(同时存在数字、字母、汉字等)
js 混合排序(同时存在数字、字母、汉字等)
314 0
|
8月前
1657.确定两个字符串是否接近
1657.确定两个字符串是否接近
56 0
|
存储 C语言
探索编程中的字母转换:如何将字母变为二进制矩阵?
二进制是学习计算机语言中一个非常重要的知识点,笔者将通过这篇文章帮助读者了解进制转换在程序中的运用,借助进制转化实现火柴形状的字母输出。
159 0
C++分离字符串中的数字和字符
C++分离字符串中的数字和字符
零基础VB教程034期:统计与分离字符串文本中的数字字母等
零基础VB教程034期:统计与分离字符串文本中的数字字母等
117 0
|
存储 Rust 自然语言处理
【算法】3. 无重复字符的最长子串(多语言实现)
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
字符串中的单词数(简单难度)
字符串中的单词数(简单难度)
90 0
字符串中的单词数(简单难度)
|
Python
Python经典编程习题100例:第17例:统计字符、数字、其他字符个数
Python经典编程习题100例:第17例:统计字符、数字、其他字符个数
125 0
|
Rust 自然语言处理 算法
【算法】1365. 有多少小于当前数字的数字(多语言实现)
给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目。 换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i 且 nums[j] < nums[i] 。 以数组形式返回答案。
【算法】1365. 有多少小于当前数字的数字(多语言实现)