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函数utf8转gb2312编码
Dec 21 PHP
让PHP COOKIE立即生效,不用刷新就可以使用
Mar 09 PHP
PHP中file_exists与is_file,is_dir的区别介绍
Sep 12 PHP
如何利用PHP执行.SQL文件
Jul 05 PHP
php操作mongoDB实例分析
Dec 29 PHP
PHP Opcache安装和配置方法介绍
May 28 PHP
PHP判断手机是IOS还是Android
Dec 09 PHP
PHP异常处理Exception类
Dec 11 PHP
php简单备份与还原MySql的方法
May 09 PHP
PHP和MYSQL实现分页导航思路详解
Apr 11 PHP
yii 2.0中表单小部件的使用方法示例
May 23 PHP
解决安装WampServer时提示缺少msvcr110.dll文件的问题
Jul 09 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
一个简易需要注册的留言版程序
2006/10/09 PHP
PHP+jQuery翻板抽奖功能实现
2015/10/19 PHP
PHP获取当前文件的父目录方法汇总
2016/07/21 PHP
yii2局部关闭(开启)csrf的验证的实例代码
2017/07/10 PHP
PHP设计模式之模板模式定义与用法详解
2018/12/20 PHP
JavaScript实现弹出子窗口并传值给父窗口
2014/12/18 Javascript
js正则表达式中exec用法实例
2015/07/23 Javascript
超赞的jQuery图片滑块动画特效代码汇总
2016/01/25 Javascript
javascript history对象详解
2017/02/09 Javascript
微信小程序 图片宽高自适应详解
2017/05/11 Javascript
Vue一次性简洁明了引入所有公共组件的方法
2018/11/28 Javascript
nodeJS进程管理器pm2的使用
2019/01/09 NodeJs
Vue Components 数字键盘的实现
2019/09/18 Javascript
Vue使用Three.js加载glTF模型的方法详解
2020/06/14 Javascript
深入分析JavaScript 事件循环(Event Loop)
2020/06/19 Javascript
Node.js文本文件BOM头的去除方法
2020/11/22 Javascript
[07:38]2014DOTA2国际邀请赛 Newbee顺利挺进胜者组赛后专访
2014/07/15 DOTA
python采集博客中上传的QQ截图文件
2014/07/18 Python
Python字符串和字典相关操作的实例详解
2017/09/23 Python
浅谈Python peewee 使用经验
2017/10/20 Python
Python中装饰器高级用法详解
2017/12/25 Python
python如何拆分含有多种分隔符的字符串
2018/03/20 Python
Python使用jsonpath-rw模块处理Json对象操作示例
2018/07/31 Python
使用Python进行目录的对比方法
2018/11/01 Python
PyQt5下拉式复选框QComboCheckBox的实例
2019/06/25 Python
python pandas利用fillna方法实现部分自动填充功能
2020/03/16 Python
Python优秀开源项目Rich源码解析的流程分析
2020/07/06 Python
解决pip安装的第三方包在PyCharm无法导入的问题
2020/10/15 Python
Python读写锁实现实现代码解析
2020/11/28 Python
德国隐形眼镜店:LuckyLens
2018/07/29 全球购物
历史系毕业生自荐信
2013/10/28 职场文书
总经理助理的八要求
2013/11/12 职场文书
市场拓展计划书
2014/05/03 职场文书
合同审查法律意见书
2015/06/04 职场文书
mysql事务隔离级别详情
2021/10/24 MySQL
MySQL 原理与优化之Limit 查询优化
2022/08/14 MySQL