php自定义截取中文字符串-utf8版


Posted in PHP onFebruary 27, 2017

先说明:网上目前有很多这个问题的代码,但是很多都是复制粘贴,没有自己实践,而且代码有逻辑问题,下面的代码由我自己编写。

话不多说

/**
   * 该函数是对于utf8编码
   * @author 2582308253@qq.com
   * @param string $str
   * @param int $start
   * @param int $length
   * @return string
   * @copyright 2017年2月27日下午1:46:10
   */
  function gbsubstr2($str, $start, $length) {
    $length = abs($length);
    $strLen = strlen($str);
    $len = $start + $length;
    $newStr = '';
    for($i = $start; $i < $len && $i < $strLen; $i++) {
      if(ord(substr($str, $i, 1)) > 0xa0) {
        //utf8编码中一个汉字是占据3个字节的,对于其他的编码的字符串,中文占据的字节各有不同,自己需要去修改这个数a
        $newStr .= substr($str, $i, 3);//此处a=3;
        $i+=2;
        $len += 2; //截取了三个字节之后,截取字符串的终止偏移量也要随着每次汉字的截取增加a-1;
      } else {
        $newStr .= substr($str, $i, 1);
      }
    }
    return $newStr;
  }

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

PHP 相关文章推荐
php中文本操作的类
Mar 17 PHP
PHP获取当前文件所在目录 getcwd()函数
May 13 PHP
php接口与接口引用的深入解析
Aug 09 PHP
ThinkPHP连接数据库及主从数据库的设置教程
Aug 22 PHP
一个完整的PHP类包含的七种语法说明
Jun 04 PHP
简单谈谈php中的unicode和utf8编码
Jun 10 PHP
php array_merge_recursive 数组合并
Oct 26 PHP
PHP中的函数声明与使用详解
May 27 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
Sep 21 PHP
使用 laravel sms 构建短信验证码发送校验功能
Nov 06 PHP
php基于环形链表解决约瑟夫环问题示例
Nov 07 PHP
PHP基于递归算法解决兔子生兔子问题
May 11 PHP
PHP读取XML格式文件的方法总结
Feb 27 #PHP
PHP批量修改文件名称的方法分析
Feb 27 #PHP
php基于PDO实现功能强大的MYSQL封装类实例
Feb 27 #PHP
php实现通过soap调用.Net的WebService asmx文件
Feb 27 #PHP
PHP 中使用ajax时一些常见错误总结整理
Feb 27 #PHP
PHP/HTML混写的四种方式总结
Feb 27 #PHP
老生常谈文本文件和二进制文件的区别
Feb 27 #PHP
You might like
CLASS_CONFUSION JS混淆 全源码
2007/12/12 Javascript
Prototype Function对象 学习
2009/07/12 Javascript
基于MVC3方式实现下拉列表联动(JQuery)
2013/09/02 Javascript
jQuery封装的获取Url中的Get参数示例
2013/11/26 Javascript
禁止拷贝网页内容的js代码
2014/01/22 Javascript
JavaScript截取字符串的Slice、Substring、Substr函数详解和比较
2014/03/20 Javascript
jQuery焦点图插件SaySlide
2015/12/21 Javascript
AngularJS过滤器详解及示例代码
2016/08/16 Javascript
bootstrap table表格插件之服务器端分页实例代码
2018/09/12 Javascript
vue头部导航动态点击处理方法
2018/11/02 Javascript
layui table 获取分页 limit的方法
2019/09/20 Javascript
JS前端广告拦截实现原理解析
2020/02/17 Javascript
easyUI 实现的后台分页与前台显示功能示例
2020/06/01 Javascript
Python模仿POST提交HTTP数据及使用Cookie值的方法
2014/11/10 Python
用Python的SimPy库简化复杂的编程模型的介绍
2015/04/13 Python
Python内置数据结构与操作符的练习题集锦
2016/07/01 Python
python非递归全排列实现方法
2017/04/10 Python
python如何实现反向迭代
2018/03/20 Python
Python subprocess模块功能与常见用法实例详解
2018/06/28 Python
python实现两个文件夹的同步
2019/08/29 Python
神经网络训练采用gpu设置的方式
2021/03/03 Python
使用spring mvc+localResizeIMG实现HTML5端图片压缩上传的功能
2016/12/16 HTML / CSS
迪卡侬印度官网:购买所有体育用品
2017/06/24 全球购物
美赞臣新加坡官方旗舰店:Enfagrow新加坡
2019/05/15 全球购物
药学专业个人的自我评价
2013/12/31 职场文书
给老师的一封建议书
2014/03/13 职场文书
抽奖活动主持词
2014/03/31 职场文书
迎国庆演讲稿
2014/09/15 职场文书
学生会干部自我鉴定2014
2014/09/18 职场文书
2015年母亲节寄语
2015/03/23 职场文书
严以律己专题学习研讨会发言材料
2015/11/09 职场文书
2019年浪漫婚礼证婚词
2019/06/27 职场文书
Python实战之OpenCV实现猫脸检测
2021/06/26 Python
低版本Druid连接池+MySQL驱动8.0导致线程阻塞、性能受限
2021/07/01 MySQL
源码分析Redis中 set 和 sorted set 的使用方法
2022/03/22 Redis
使用Canvas绘制一个游戏人物属性图
2022/03/25 Javascript