0

0

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

php中文网

php中文网

发布时间:2016-07-25 09:04:17

|

1198人浏览过

|

来源于php中文网

原创

  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. ?>
复制代码


相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Word 字间距调整方法汇总
Word 字间距调整方法汇总

本专题整合了Word字间距调整方法,阅读下面的文章了解更详细操作。

2

2025.12.24

任务管理器教程
任务管理器教程

本专题整合了任务管理器相关教程,阅读下面的文章了解更多详细操作。

2

2025.12.24

AppleID格式
AppleID格式

本专题整合了AppleID相关内容,阅读专题下面的文章了解更多详细教程。

0

2025.12.24

csgo视频观看入口合集
csgo视频观看入口合集

本专题整合了csgo观看入口合集,阅读下面的文章了知道更多入口地址。

29

2025.12.24

yandex外贸入口合集
yandex外贸入口合集

本专题汇总了yandex外贸入口地址,阅读下面的文章了解更多内容。

58

2025.12.24

添加脚注通用方法
添加脚注通用方法

本专题整合了添加脚注方法合集,阅读专题下面的文章了解更多内容。

1

2025.12.24

重启电脑教程汇总
重启电脑教程汇总

本专题整合了重启电脑操作教程,阅读下面的文章了解更多详细教程。

3

2025.12.24

纸张尺寸汇总
纸张尺寸汇总

本专题整合了纸张尺寸相关内容,阅读专题下面的文章了解更多内容。

5

2025.12.24

Java Spring Boot 微服务实战
Java Spring Boot 微服务实战

本专题深入讲解 Java Spring Boot 在微服务架构中的应用,内容涵盖服务注册与发现、REST API开发、配置中心、负载均衡、熔断与限流、日志与监控。通过实际项目案例(如电商订单系统),帮助开发者掌握 从单体应用迁移到高可用微服务系统的完整流程与实战能力。

1

2025.12.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP基础入门课程
PHP基础入门课程

共33课时 | 1.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号