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 读取文件内容代码(txt,js等)
Dec 06 PHP
php获取ip的三个属性区别介绍(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
Sep 23 PHP
PHP自动生成后台导航网址的最佳方法
Aug 27 PHP
回帖脱衣服的图片实现代码
Feb 15 PHP
PHP常用处理静态操作类
Apr 03 PHP
PHP获取音频文件的相关信息
Jun 22 PHP
JSON用法之将PHP数组转JS数组,JS如何接收PHP数组
Oct 08 PHP
PHP6新特性分析
Mar 03 PHP
PHP执行shell脚本运行程序不产生core文件的方法
Dec 28 PHP
php 可变函数使用小结
Jun 12 PHP
laravel通过a标签从视图向控制器实现传值
Oct 15 PHP
Thinkphp 框架扩展之Widget扩展实现方法分析
Apr 23 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中文URL编解码(urlencode()rawurlencode()
2010/07/03 PHP
怎么在Windows系统中搭建php环境
2013/08/31 PHP
thinkphp5 URL和路由的功能详解与实例
2017/12/26 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
jquery ajax执行后台方法
2010/03/18 Javascript
一些常用弹出窗口/拖放/异步文件上传等实用代码
2013/01/06 Javascript
让ie6也支持websocket采用flash封装实现
2013/02/18 Javascript
javascript正则匹配汉字、数字、字母、下划线
2014/04/10 Javascript
javaScript年份下拉列表框内容为当前年份及前后50年
2014/05/28 Javascript
使用ajaxfileupload.js实现上传文件功能
2016/08/13 Javascript
老生常谈javascript的类型转换
2016/10/12 Javascript
Jquery UI实现一次拖拽多个选中的元素操作
2020/12/01 Javascript
JS计算距当前时间的时间差实例
2017/12/29 Javascript
Angular实现下拉框模糊查询功能示例
2018/01/03 Javascript
JavaScript如何对图片进行黑白化
2018/04/10 Javascript
详解js创建对象的几种方法及继承
2019/04/12 Javascript
[38:39]KG vs Mineski 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python Django模板的使用方法(图文)
2013/11/04 Python
VTK与Python实现机械臂三维模型可视化详解
2017/12/13 Python
Python实现PS滤镜Fish lens图像扭曲效果示例
2018/01/29 Python
pandas 透视表中文字段排序方法
2018/11/16 Python
Django保护敏感信息的方法示例
2019/05/09 Python
YUV转为jpg图像的实现
2019/12/09 Python
简单了解Django ORM常用字段类型及参数配置
2020/01/07 Python
Python多进程编程常用方法解析
2020/03/26 Python
HTML5不支持frameset的两种解决方法
2016/11/14 HTML / CSS
阿里健康大药房:阿里自营网上药店
2017/08/01 全球购物
澳大利亚优质的家居用品和生活方式公司:Bed Bath N’ Table
2019/04/16 全球购物
法国在线药房:Shop Pharmacie
2019/11/26 全球购物
优质服务口号
2014/06/11 职场文书
园林专业毕业生自荐信
2014/07/04 职场文书
幼儿园安全教育月活动总结
2015/05/08 职场文书
2015年初中教师个人工作总结
2015/07/21 职场文书
导游词之泉州崇武古城
2019/12/20 职场文书
python文件名批量重命名脚本实例代码
2021/04/22 Python