首页 >后端开发 >php教程 >PHP 统计中文字符串的长度 字符串转数字 php 分割字符串 php 字符串长度 ph

PHP 统计中文字符串的长度 字符串转数字 php 分割字符串 php 字符串长度 ph

WBOY
WBOY原创
2016-07-29 08:53:271483浏览

中文网站一般会选择两种编码:gbk/gb2312或是utf-8。
gbk编码下每个中文字符所占字节为2,例:

<code><span>$zhStr</span> = ‘您好,中国!’;
<span>echo</span> strlen(<span>$zhStr</span>); <span>// 输出:12</span></code>
<code>utf-8编码下每个中文字符所占字节为3,例:
</code>
<code><span>$zhStr</span> = ‘您好,中国!’;
<span>echo</span> strlen(<span>$zhStr</span>); <span>// 输出:18</span></code>

那么如何计算这组中文字符串的长度呢?有人可能会说gbk下获取中文字符串长度除以2,utf-8编码下除以3不就行了吗?但是您要考虑字符串并不老实,99%的情况会以中英混合的情况出现。
这是WordPress中的一段代码,主要思想就是先用正则将字符串分解为个体单元,然后再计算单元的个数即字符串的长度,代码如下(只能处理utf-8编码下的字符串):

<code><span>$zhStr</span> = ‘您好,中国!’;
<span>$str</span> = ‘Hello,中国!’;
<span>// 计算中文字符串长度</span><span><span>function</span><span>utf8_strlen</span><span>(<span>$string</span> = null)</span> {</span><span>// 将字符串分解为单元</span>
preg_match_all(“/./us”, <span>$string</span>, <span>$match</span>);
<span>// 返回单元个数</span><span>return</span> count(<span>$match</span>[<span>0</span>]);
}
<span>echo</span> utf8_strlen(<span>$zhStr</span>); <span>// 输出:6</span><span>echo</span> utf8_strlen(<span>$str</span>); <span>// 输出:9</span></code>

下面我封装了一个函数准确计算中文字符串的长度:

<code><span><span>function</span><span>count_strlen</span><span>(<span>$string</span> = null)</span>
{</span><span>$fileType</span> = mb_detect_encoding(<span>$string</span> , <span>array</span>(<span>'UTF-8'</span>,<span>'GBK'</span>,<span>'LATIN1'</span>,<span>'BIG5'</span>)) ; <span>//判断字符串中文编码的类型</span><span>$length</span> = iconv_strlen(<span>$string</span>,<span>$fileType</span>);<span>//根据字符编码计算字符串长度</span><span>return</span><span>$length</span>;
}

<span>$str</span> = <span>"中文45汶"</span>;
<span>$len</span> = count_strlen(<span>$str</span>);
<span>echo</span><span>$len</span>; <span>//输出5</span></code>
').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

以上就介绍了PHP 统计中文字符串的长度,包括了字符串,php方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn