php获取中文字符串长度的方法

WBOY
Freigeben: 2016-07-25 09:07:14
Original
1727 Leute haben es durchsucht
  1. $str = 'Hello world!';
  2. echo strlen($str); // 输出12
  3. ?>
复制代码

然而在PHP自带的函数中,strlen及mb_strlen都是通过计算字符串所占字节数来计算长度的,在不同的编码情况下,中文所占的字节数是不同的。在GBK/GB2312下,中文字符占2个字节,而在UTF-8下,中文字符占3个字节。

  1. $str = '你好,世界!';
  2. echo strlen($str); // GBK或GB2312下输出12,UTF-8下输出18
  3. ?>
复制代码

而我们在判断字符串长度时往往需要判断的是字符的数量,而非字符串所占字节数,如在UTF-8下的这段php代码:

  1. $name = '张耕畅';
  2. $len = strlen($name);
  3. // 输出 FALSE,因为在UTF-8下三个中文占9个字节
  4. if($len >= 3 && $len echo 'TRUE';
  5. }else{
  6. echo 'FALSE';
  7. }
  8. ?>
复制代码

那么有什么方便而实用的方法可以获得含中文字符串的长度呢?可以用正则计算出中文字符的个数,在GBK/GB2312编码下除以2,UTF-8编码下则除以3,最后再加上非中文字符串的长度,但这样未免太过麻烦,WordPress中有一段更漂亮的代码,借鉴如下:

  1. $str = 'Hello,世界!';
  2. preg_match_all('/./us', $str, $match);
  3. echo count($match[0]); // 输出9
  4. ?>
复制代码

用正则表达式将字符串分割成单个字符,并直接用count计算出匹配到的字符数,便得到我们想要的结果了。



Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage