PHP如何准确实时统计中文字数及区分字符类型?
- 内容介绍
- 文章标签
- 相关推荐
本文共计688个文字,预计阅读时间需要3分钟。
在PHP中,正确统计中文字符长度是一个常见问题。以下是一个简单的示例,展示如何使用PHP内置函数来计算中文字符串的长度:
php
// 使用strlen计算字符数,会计算所有字符,包括中文字符echo strlen() 方法计算结果: . strlen($chineseStr) . \n;
// 使用mb_strlen计算实际中文字符数,会正确统计中文字符echo mb_strlen() 方法计算结果: . mb_strlen($chineseStr, 'utf-8') . \n;
// 使用mb_strwidth计算字符宽度,对于中文字符,通常宽度为2echo mb_strwidth() 方法计算结果: . mb_strwidth($chineseStr, 'utf-8') . \n;?>
这段代码展示了如何使用PHP的`strlen`、`mb_strlen`和`mb_strwidth`函数来统计中文字符串的长度。`strlen`会计算字符串中的所有字符数,而`mb_strlen`和`mb_strwidth`则能更准确地计算中文字符的实际数量和宽度。
1、PHP 中如何正确统计中文字数?这个是困扰我很久的问题,PHP 中有很多函数可以计算字符串的长度,比如下面的例子,分别使用了strlen,mb_strlen,mb_strwidth这个三个函数去测试统计字符串的长度,看看把中文算成几个字节:
echo strlen("你好ABC") . ""; # 输出 9 echo mb_strlen("你好ABC", 'UTF-8') . ""; # 输出 5 echo mb_strwidth("你好ABC") . ""; #输出 7
从上面的测试,我们可以看出:strlen把中文字符算成3个字节,mb_strlen不管
</script>中文还是英文,都算1个字节,而mb_strwidth则把中文算成2个字节,所以mb_strwidth才是我们想要的:中文 2 个字节,英文 1 个字节。
同样截取字符串也建议使用mb_strimwidth,也是按照中文 2 个字节,英文 1 个字节方式计算之后的,并且如果字数超过截取的要求,这个函数还可以在最后面自动添加‘…'。
mb_strimwidth($post_excerpt,0,240,'...','utf-8');
注意,最后添加‘utf-8'编码参数,可以避免中文截取乱码的问题。
2、
<script type="text/javascript"> var len = $('#Form-field-Course-description').text().length; $('#Form-field-Course-description-group').append('<div id="txtNum" style="position: absolute;right: -50px;bottom: 18px;"></div>'); var len=$('#Form-field-Course-description').val().length; $('#txtNum').text(len+"/500"); $('#Form-field-Course-description').bind('input propertychange', function() { var val=$(this).val(); var len=val.length; if(len>500){ len=500; $(this).val(val.substring(0,500)); } $('#txtNum').text(len+"/500"); }); </script>
根据Octobercms后台update获取textarea长度,通过input,propertychange事件监听事件
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对易盾网络的支持。如果你想了解更多相关内容请查看下面相关链接
本文共计688个文字,预计阅读时间需要3分钟。
在PHP中,正确统计中文字符长度是一个常见问题。以下是一个简单的示例,展示如何使用PHP内置函数来计算中文字符串的长度:
php
// 使用strlen计算字符数,会计算所有字符,包括中文字符echo strlen() 方法计算结果: . strlen($chineseStr) . \n;
// 使用mb_strlen计算实际中文字符数,会正确统计中文字符echo mb_strlen() 方法计算结果: . mb_strlen($chineseStr, 'utf-8') . \n;
// 使用mb_strwidth计算字符宽度,对于中文字符,通常宽度为2echo mb_strwidth() 方法计算结果: . mb_strwidth($chineseStr, 'utf-8') . \n;?>
这段代码展示了如何使用PHP的`strlen`、`mb_strlen`和`mb_strwidth`函数来统计中文字符串的长度。`strlen`会计算字符串中的所有字符数,而`mb_strlen`和`mb_strwidth`则能更准确地计算中文字符的实际数量和宽度。
1、PHP 中如何正确统计中文字数?这个是困扰我很久的问题,PHP 中有很多函数可以计算字符串的长度,比如下面的例子,分别使用了strlen,mb_strlen,mb_strwidth这个三个函数去测试统计字符串的长度,看看把中文算成几个字节:
echo strlen("你好ABC") . ""; # 输出 9 echo mb_strlen("你好ABC", 'UTF-8') . ""; # 输出 5 echo mb_strwidth("你好ABC") . ""; #输出 7
从上面的测试,我们可以看出:strlen把中文字符算成3个字节,mb_strlen不管
</script>中文还是英文,都算1个字节,而mb_strwidth则把中文算成2个字节,所以mb_strwidth才是我们想要的:中文 2 个字节,英文 1 个字节。
同样截取字符串也建议使用mb_strimwidth,也是按照中文 2 个字节,英文 1 个字节方式计算之后的,并且如果字数超过截取的要求,这个函数还可以在最后面自动添加‘…'。
mb_strimwidth($post_excerpt,0,240,'...','utf-8');
注意,最后添加‘utf-8'编码参数,可以避免中文截取乱码的问题。
2、
<script type="text/javascript"> var len = $('#Form-field-Course-description').text().length; $('#Form-field-Course-description-group').append('<div id="txtNum" style="position: absolute;right: -50px;bottom: 18px;"></div>'); var len=$('#Form-field-Course-description').val().length; $('#txtNum').text(len+"/500"); $('#Form-field-Course-description').bind('input propertychange', function() { var val=$(this).val(); var len=val.length; if(len>500){ len=500; $(this).val(val.substring(0,500)); } $('#txtNum').text(len+"/500"); }); </script>
根据Octobercms后台update获取textarea长度,通过input,propertychange事件监听事件
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对易盾网络的支持。如果你想了解更多相关内容请查看下面相关链接

