Heim  >  Artikel  >  Backend-Entwicklung  >  PHP 统计中文字符串的长度 字符串转数字 php 分割字符串 php 字符串长度 ph

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

WBOY
WBOYOriginal
2016-07-29 08:53:271458Durchsuche

中文网站一般会选择两种编码: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教程有兴趣的朋友有所帮助。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn