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 相关文章推荐
Session保存到数据库的php类分享
Oct 24 PHP
探讨方法的重写(覆载)详解
Jun 08 PHP
ThinkPHP结合ajax、Mysql实现的客户端通信功能代码示例
Jun 23 PHP
PHP之uniqid()函数用法
Nov 03 PHP
php限制上传文件类型并保存上传文件的方法
Mar 13 PHP
php实现模拟post请求用法实例
Jul 11 PHP
php验证邮箱和ip地址最简单方法汇总
Oct 30 PHP
PHP redis实现超迷你全文检索
Mar 04 PHP
PHP让数组中有相同值的组成新的数组实例
Dec 31 PHP
PHP文件操作实例总结【文件上传、下载、分页】
Dec 08 PHP
PHP echo()函数讲解
Feb 15 PHP
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
Apr 01 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
nginx+php-fpm配置文件的组织结构介绍
2012/11/07 PHP
点弹代码 点击页面任何位置都可以弹出页面效果代码
2012/09/17 Javascript
js获取html文件的思路及示例
2013/09/17 Javascript
动态添加删除表格行的js实现代码
2014/02/28 Javascript
jQuery Ajax调用WCF服务详细教程
2015/03/31 Javascript
关于axios不能使用Vue.use()浅析
2018/01/12 Javascript
解决vue项目报错webpackJsonp is not defined问题
2018/03/14 Javascript
Mint UI组件库CheckList使用及踩坑总结
2018/12/20 Javascript
js+canvas实现画板功能
2020/09/13 Javascript
javascript实现搜索筛选功能实例代码
2020/11/12 Javascript
[03:32]2014DOTA2西雅图邀请赛 CIS外卡赛赛前black专访
2014/07/09 DOTA
zbar解码二维码和条形码示例
2014/02/07 Python
Python自动调用IE打开某个网站的方法
2015/06/03 Python
Python使用smtp和pop简单收发邮件完整实例
2018/01/09 Python
深入浅析python with语句简介
2018/04/11 Python
Python中反射和描述器总结
2018/09/23 Python
python脚本开机自启的实现方法
2019/06/28 Python
python设计微型小说网站(基于Django+Bootstrap框架)
2019/07/08 Python
如何关掉pycharm中的python console(图解)
2019/10/31 Python
Python hashlib模块实例使用详解
2019/12/24 Python
Python Print实现在输出中插入变量的例子
2019/12/25 Python
使用Pyhton 分析酒店针孔摄像头
2020/03/04 Python
Python使用re模块验证危险字符
2020/05/21 Python
Timberland法国官网:购买靴子、鞋子、衣服、夹克和配饰
2019/11/30 全球购物
如何配置、使用和清除Smarty缓存
2015/12/23 面试题
关键字throw与throws的用法差异
2016/11/22 面试题
《九色鹿》教学反思
2014/02/27 职场文书
信用卡工作证明模板
2014/09/14 职场文书
2014年减负工作总结
2014/12/10 职场文书
警示教育观后感
2015/06/17 职场文书
《彼得与狼》教学反思
2016/02/20 职场文书
golang 接口嵌套实现复用的操作
2021/04/29 Golang
Python基础之教你怎么在M1系统上使用pandas
2021/05/08 Python
Python 数据结构之十大经典排序算法一文通关
2021/10/16 Python
德劲DE1105机评
2022/04/05 无线电
Spring Cloud Netflix 套件中的负载均衡组件 Ribbon
2022/04/13 Java/Android