php英文字符串截取代码(保证单词完整性)

php中文网
发布: 2016-07-25 08:53:04
原创
1326人浏览过
  1. /**
  2. * 完整词的截取
  3. * bbs.it-home.org 编辑整理
  4. * @param $str
  5. * @param $start
  6. * @param $length
  7. *
  8. * @return string
  9. */
  10. public static function usubstr($str, $start, $length = null)
  11. {
  12. // 先正常截取一遍.
  13. $res = substr($str, $start, $length);
  14. $strlen = strlen($str);
  15. /* 接着判断头尾各6字节是否完整(不残缺) */
  16. // 如果参数start是正数
  17. if ($start >= 0) {
  18. // 往前再截取大约6字节
  19. $next_start = $start + $length; // 初始位置
  20. $next_len = $next_start + 6 $next_segm = substr($str, $next_start, $next_len);
  21. // 如果第1字节就不是 完整字符的首字节, 再往后截取大约6字节
  22. $prev_start = $start - 6 > 0 ? $start - 6 : 0;
  23. $prev_segm = substr($str, $prev_start, $start - $prev_start);
  24. } // start是负数
  25. else {
  26. // 往前再截取大约6字节
  27. $next_start = $strlen + $start + $length; // 初始位置
  28. $next_len = $next_start + 6 $next_segm = substr($str, $next_start, $next_len);
  29. // 如果第1字节就不是 完整字符的首字节, 再往后截取大约6字节.
  30. $start = $strlen + $start;
  31. $prev_start = $start - 6 > 0 ? $start - 6 : 0;
  32. $prev_segm = substr($str, $prev_start, $start - $prev_start);
  33. }
  34. // 判断前6字节是否符合utf8规则
  35. if (preg_match('@^([x80-xBF]{0,5})[xC0-xFD]?@', $next_segm, $bytes)) {
  36. if (!empty($bytes[1])) {
  37. $bytes = $bytes[1];
  38. $res .= $bytes;
  39. }
  40. }
  41. // 判断后6字节是否符合utf8规则
  42. $ord0 = ord($res[0]);
  43. if (128 = $ord0) {
  44. // 往后截取 , 并加在res的前面.
  45. if (preg_match('@[xC0-xFD][x80-xBF]{0,5}$@', $prev_segm, $bytes)) {
  46. if (!empty($bytes[0])) {
  47. $bytes = $bytes[0];
  48. $res = $bytes . $res;
  49. }
  50. }
  51. }
  52. if (strlen($res) $res = $res . '...';
  53. }
  54. return $res;
  55. }
复制代码


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

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

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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