PHP对中文字符串的处理一直困扰着刚刚接触PHP开发的新程序员:

PHP的功能如strlen()和mb_strlen()用于计算一个字符串的字节数计算一个字符串的长度,和一个英文字符是1个字节。例:

还是美元=你好,中国!;
回声strlen(还是美元); / /输出:12

在中国,中国的网站通常选择两种编码:GBK和GB2312或utf-8.utf-8可以更有特点兼容,所以它是受许多stationmaster.gbk和UTF-8是中文编码不同,导致中国在GBK和UTF-8编码的字节数的差异。

每个汉字GBK编码下的字节是2,例如:

zhstr美元=你好,中国!;
回声strlen($ zhstr); / /输出:12

每个汉字在UTF-8编码的字节是3,例如:

zhstr美元=你好,中国!;
回声strlen($ zhstr); / /输出:18

那你怎么计算这组中文琴弦的长度呢可以说,中国的字符串的长度除以2下,GBK,UTF-8代码除以3下不好吗但是你要考虑的是字符串不诚实,99%的情况会用中英文混合。

这是WordPress中的代码。其主要思想是按常规方式将字符串分解为各个单元,然后计算单位数,即字符串的长度。代码如下:(只处理编码UTF-8字符串):
复制代码代码如下所示:
zhstr美元=你好,中国!;
$str =你好,中国!;

计算字符串的长度
功能utf8_strlen($字符串= null){
字符串分解单元
preg_match_all( / / 。
返回单元格号
返回计数($匹配{ 0 });
}
回声utf8_strlen($ zhstr); / /输出:6
回声utf8_strlen(str); / /输出:9

utf8_strlen u2013所获得的utf8编码的字符串的长度
复制代码代码如下所示:
*
*为UTF8编码程序
*得到一个字符串的长度,一个3长度的中文表示
* itlearner注释
* /
功能utf8_strlen($str){
$=0;
为($我= 0;$i < strlen(str);$ i++){
价值= ORD($str {我});
如果($ > 127){
数+;
如果($ > = 192 $ $ = 223 $ I + +);
($值> = 224美元值<= 239)$我=我+ 2美元;
($值> = 240美元值<= 247)$我=我+ 3美元;
人死(不是UTF-8兼容的字符串);
}
数+;
}
返回$计数;
}