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 相关文章推荐
phpmyadmin里面导入sql语句格式的大量数据的方法
Jun 05 PHP
PHP 登录记住密码实现思路
May 07 PHP
探讨Hessian在PHP中的使用分析
Jun 13 PHP
强制PHP命令行脚本单进程运行的方法
Apr 15 PHP
PHP设计模式之适配器模式代码实例
May 11 PHP
Laravel 中获取上一篇和下一篇数据
Jul 27 PHP
PHP实现简单汉字验证码
Jul 28 PHP
CodeIgniter配置之SESSION用法实例分析
Jan 19 PHP
phpinfo() 中 Local Value(局部变量)Master Value(主变量) 的区别
Feb 03 PHP
Yii实现文章列表置顶功能示例
Oct 18 PHP
YII框架批量插入数据的方法
Mar 18 PHP
ThinkPHP 模板引擎使用详解
May 07 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
什么情况下可以不写PHP的闭合标签“?&gt;”
2014/08/28 PHP
php简单实现sql防注入的方法
2016/04/22 PHP
浅谈laravel中的关联查询with的问题
2019/10/10 PHP
JavaScript用JQuery呼叫Server端方法示例代码
2014/09/03 Javascript
输入框过滤非数字的js代码
2014/09/18 Javascript
Javascript学习笔记之 函数篇(三) : 闭包和引用
2014/11/23 Javascript
jquery判断单选按钮radio是否选中的方法
2015/05/05 Javascript
学习JavaScript图片预加载模块
2016/11/07 Javascript
javascript 判断一个对象为数组的方法
2017/05/03 Javascript
详解React开发中使用require.ensure()按需加载ES6组件
2017/05/12 Javascript
详解vue-cli快速构建vue应用并实现webpack打包
2017/12/13 Javascript
Vue.js 表单控件操作小结
2018/03/29 Javascript
react.js组件实现拖拽复制和可排序的示例代码
2018/08/20 Javascript
javascript中join方法实例讲解
2019/02/21 Javascript
layui表格数据复选框回显设置方法
2019/09/13 Javascript
在vue中使用echars实现上浮与下钻效果
2019/11/08 Javascript
vue quill editor 使用富文本添加上传音频功能
2020/01/14 Javascript
Js生成随机数/随机字符串的方法小结【5种方法】
2020/05/27 Javascript
javascript读取本地文件和目录方法详解
2020/08/06 Javascript
[54:47]Liquid vs VP Supermajor决赛 BO 第五场 6.10
2018/07/05 DOTA
[54:05]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第一场 1月9日
2021/03/11 DOTA
利用python获得时间的实例说明
2013/03/25 Python
Python中无限元素列表的实现方法
2014/08/18 Python
pyhton中__pycache__文件夹的产生与作用详解
2019/11/24 Python
使用jupyter Nodebook查看函数或方法的参数以及使用情况
2020/04/14 Python
Python+Appium实现自动化清理微信僵尸好友的方法
2021/02/04 Python
HTML5拖放API实现拖放排序的实例代码
2017/05/11 HTML / CSS
美国开幕式潮店:Opening Ceremony
2018/02/10 全球购物
怎样在程序里获得一个空指针
2015/01/24 面试题
房地产还款计划书
2014/01/10 职场文书
客服专员岗位职责
2014/02/28 职场文书
出纳试用期自我鉴定范文
2014/09/16 职场文书
销售人员工作自我评价
2014/09/21 职场文书
四大名著读书笔记
2015/06/25 职场文书
教你快速开启Apache SkyWalking的自监控
2021/04/25 Servers
vue elementUI批量上传文件
2022/04/26 Vue.js