php mb_strlen()中英混体字符截取代码

如果在用mb_strlen出现fatal error: call to undefined function mb_strlen,这种问题你要可以用php info()看一下有没有装载mbstring,如果没有,尝试将php_mbstring.dll复制到windows目录下。

文件编码 utf-8

  1. $var = '中文字符abc';
  2. mb_strlen($var, 'utf-8'); // 输出7 中文英文都占一个字节
  3. mb_strlen($var); // 输出15 中文占3个字节 英文占一个字节
  4. mb_strlen($var, 'gbk'); // 输出9 不正常

取全部中文

  1. function utf8substr($str, $from, $len)
  2. {
  3. return preg_replace('#^(?:[x00-x7f]|[xc0-xff][x80-xbf]+){0,'.$from.'}'.
  4. '((?:[x00-x7f]|[xc0-xff][x80-xbf]+){0,'.$len.'}).*#s',
  5. '$1',$str);
  6. }

中文与英混体截取代码

  1. function gb2312_strlen($string)
  2. {
  3. $str_len = strlen($string);
  4. $str_count = 0;
  5. for($j = 0; $j < $str_len; $j++)
  6. {
  7. if(ord($string{$j}) < 127)
  8. {
  9. $str_count += 1;
  10. continue;
  11. }
  12. else
  13. {
  14. if(ord($string{$j+1}) > 127)
  15. {
  16. $str_count += 1;
  17. $j++;
  18. continue;
  19. }
  20. else
  21. {
  22. $str_count += 1;
  23. continue;
  24. }
  25. }
  26. }
  27. return $str_count;
  28. }
  29. $str = "开s d";
  30. echo gb2312_strlen($str);