Heim > Backend-Entwicklung > PHP-Tutorial > php计算中文字符串长度、截取中文字符串的函数

php计算中文字符串长度、截取中文字符串的函数

WBOY
Freigeben: 2016-07-25 09:04:17
Original
871 Leute haben es durchsucht
  1. header('Content-type:text/html;charset=utf-8');
  2. /**
  3. * 统计中文字符串长度的函数
  4. * @param $str 要计算长度的字符串
  5. * @param $type 计算长度类型,0(默认)表示一个中文算一个字符,1表示一个中文算两个字符
  6. * @http://bbs.it-home.org
  7. *
  8. */
  9. function abslength($str)
  10. {
  11. if(empty($str)){
  12. return 0;
  13. }
  14. if(function_exists('mb_strlen')){
  15. return mb_strlen($str,'utf-8');
  16. }
  17. else {
  18. preg_match_all("/./u", $str, $ar);
  19. return count($ar[0]);
  20. }
  21. }
  22. $str = '脚本学堂欢迎大家的光临,ye!';
  23. $len = abslength($str);
  24. var_dump($len); //return 12
  25. $len = abslength($str,'1');
  26. echo '
    '.$len; //return 22
  27. /*
  28. utf-8编码下截取中文字符串,参数可以参照substr函数
  29. @param $str 要进行截取的字符串
  30. @param $start 要进行截取的开始位置,负数为反向截取
  31. @param $end 要进行截取的长度
  32. */
  33. function utf8_substr($str,$start=0) {
  34. if(empty($str)){
  35. return false;
  36. }
  37. if (function_exists('mb_substr')){
  38. if(func_num_args() >= 3) {
  39. $end = func_get_arg(2);
  40. return mb_substr($str,$start,$end,'utf-8');
  41. }
  42. else {
  43. mb_internal_encoding("UTF-8");
  44. return mb_substr($str,$start);
  45. }
  46. }
  47. else {
  48. $null = "";
  49. preg_match_all("/./u", $str, $ar);
  50. if(func_num_args() >= 3) {
  51. $end = func_get_arg(2);
  52. return join($null, array_slice($ar[0],$start,$end));
  53. }
  54. else {
  55. return join($null, array_slice($ar[0],$start));
  56. }
  57. }
  58. }
  59. $str2 = 'wo要截取zhongwen';
  60. echo '
    ';
  61. echo utf8_substr($str2,0,-4); //return wo要截取zhon
  62. ?>
复制代码

2、支持gb2312,gbk,utf-8,big5 中文截取方法

  1. /*
  2. * 中文截取,支持gb2312,gbk,utf-8,big5
  3. * bbs.it-home.org
  4. * @param string $str 要截取的字串
  5. * @param int $start 截取起始位置
  6. * @param int $length 截取长度
  7. * @param string $charset utf-8|gb2312|gbk|big5 编码
  8. * @param $suffix 是否加尾缀
  9. */
  10. public function csubstr($str, $start=0, $length, $charset="utf-8", $suffix=true)
  11. {
  12. if(function_exists("mb_substr"))
  13. {
  14. if(mb_strlen($str, $charset) $slice = mb_substr($str, $start, $length, $charset);
  15. }
  16. else
  17. {
  18. $re['utf-8'] = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";
  19. $re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";
  20. $re['gbk'] = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";
  21. $re['big5'] = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";
  22. preg_match_all($re[$charset], $str, $match);
  23. if(count($match[0]) $slice = join("",array_slice($match[0], $start, $length));
  24. }
  25. if($suffix) return $slice."…";
  26. return $slice;
  27. }
  28. ?>
复制代码


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