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操作流程
Oct 09 PHP
PHP与SQL注入攻击[三]
Apr 17 PHP
PHP PDOStatement:bindParam插入数据错误问题分析
Nov 13 PHP
PHP+Memcache实现wordpress访问总数统计(非插件)
Jul 04 PHP
php过滤所有的空白字符(空格、全角空格、换行等)
Oct 27 PHP
Joomla简单判断用户是否登录的方法
May 04 PHP
PHP静态成员变量和非静态成员变量详解
Feb 14 PHP
php实现多维数组排序的方法示例
Mar 23 PHP
php制作圆形用户头像的实例_自定义封装类源代码
Sep 18 PHP
PHP基础之输出缓冲区基本概念、原理分析
Jun 19 PHP
thinkphp 5框架实现登陆,登出及session登陆状态检测功能示例
Oct 10 PHP
PHP数组访问常用方法解析
Sep 05 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
node.js 一个简单的页面输出实现代码
2012/03/07 Javascript
jQuery 获取浏览器所在的IP地址的小例子
2013/11/08 Javascript
使用js检测浏览器是否支持html5中的video标签的方法
2014/03/12 Javascript
jQuery判断div随滚动条滚动到一定位置后停止
2014/04/02 Javascript
js语法学习之判断一个对象是否为数组
2014/05/13 Javascript
基于BootStrap的图片轮播效果展示实例代码
2016/05/23 Javascript
Vue.js每天必学之方法与事件处理器
2016/09/06 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/10/05 Javascript
性能优化之代码优化页面加载速度
2017/03/01 Javascript
Vuejs实现带样式的单文件组件新方法
2017/05/02 Javascript
基于jQuery实现图片推拉门动画效果的两种方法
2017/08/26 jQuery
Vue不能检测到Object/Array更新的情况的解决
2018/06/26 Javascript
使用layer弹窗和layui表单实现新增功能
2018/08/09 Javascript
vue项目上传Github预览的实现示例
2018/11/06 Javascript
[01:03:47]VP vs NewBee Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
Python兔子毒药问题实例分析
2015/03/05 Python
python编写简单爬虫资料汇总
2016/03/22 Python
浅谈python爬虫使用Selenium模拟浏览器行为
2018/02/23 Python
Python这样操作能存储100多万行的xlsx文件
2019/04/16 Python
Python @property使用方法解析
2019/09/17 Python
浅谈Python里面None True False之间的区别
2020/07/09 Python
HTML5 canvas基本绘图之绘制线段
2016/06/27 HTML / CSS
ET Mall东森购物网:东森严选
2017/03/06 全球购物
监理员的岗位职责
2013/11/13 职场文书
中专生求职自荐信范文
2013/12/22 职场文书
企业管理毕业生求职信范文
2014/03/07 职场文书
小学老师寄语大全
2014/04/04 职场文书
勤俭节约倡议书
2014/04/14 职场文书
商务日语专业自荐信
2014/04/17 职场文书
小学优秀教育工作者事迹材料
2014/05/09 职场文书
小组名称和口号
2014/06/09 职场文书
大学军训自我鉴定大全
2014/09/18 职场文书
乡镇三严三实学习心得体会
2014/10/13 职场文书
javascript条件式访问属性和箭头函数介绍
2021/11/17 Javascript
Oracle用户管理及赋权
2022/04/24 Oracle
Spring Data JPA框架的核心概念和Repository接口
2022/04/28 Java/Android