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与SQL注入攻击[三]
Apr 17 PHP
基于PHP array数组的教程详解
Jun 05 PHP
async和DOM Script文件加载比较
Jul 20 PHP
php创建和删除目录函数介绍和递归删除目录函数分享
Nov 18 PHP
ThinkPHP自定义Redis处理SESSION的实现方法
May 16 PHP
PHP 微信扫码支付源代码(推荐)
Nov 03 PHP
Yii框架弹出框功能示例
Jan 07 PHP
PHP实现一个轻量级容器的方法
Jan 28 PHP
PHP中Static(静态)关键字功能与用法实例分析
Apr 05 PHP
PHP各种常见经典算法总结【排序、查找、翻转等】
Aug 05 PHP
php写入mysql中文乱码的实例解决方法
Sep 17 PHP
phpfpm的作用和用法
Oct 10 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
php5中date()得出的时间为什么不是当前时间的解决方法
2008/06/30 PHP
PHP目录函数实现创建、读取目录教程实例
2011/01/13 PHP
在php和MySql中计算时间差的方法
2011/04/22 PHP
php&amp;mysql 日期操作小记
2012/02/27 PHP
joomla实现注册用户添加新字段的方法
2016/05/05 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
PHP PDOStatement::setFetchMode讲解
2019/02/03 PHP
JS 获取span标签中的值的代码 支持ie与firefox
2009/08/24 Javascript
简易js代码实现计算器操作
2013/04/15 Javascript
jQuery ajax dataType值为text json探索分享
2013/09/23 Javascript
JS Loading功能的简单实现
2013/11/29 Javascript
js es6系列教程 - 基于new.target属性与es5改造es6的类语法
2017/09/02 Javascript
vue-router项目实战总结篇
2018/02/11 Javascript
vue中mint-ui的使用方法
2018/04/04 Javascript
vue-image-crop基于Vue的移动端图片裁剪组件示例
2018/08/28 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变rgba的a值实现)
2019/01/24 Javascript
初步解析Python下的多进程编程
2015/04/28 Python
Python中处理字符串的相关的len()方法的使用简介
2015/05/19 Python
python字符串str和字节数组相互转化方法
2017/03/18 Python
Python实现读取json文件到excel表
2017/11/18 Python
Python获取当前函数名称方法实例分享
2018/01/18 Python
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
2018/10/11 Python
Python 微信之获取好友昵称并制作wordcloud的实例
2019/02/21 Python
python3.x实现base64加密和解密
2019/03/28 Python
对pyqt5之menu和action的使用详解
2019/06/20 Python
Python封装成可带参数的EXE安装包实例
2019/08/24 Python
Linux下升级安装python3.8并配置pip及yum的教程
2020/01/02 Python
浅谈移动端网页图片预加载方案
2018/11/05 HTML / CSS
求职自荐信范文格式
2013/11/29 职场文书
本科生自荐信
2014/06/18 职场文书
质量整改报告范文
2014/11/08 职场文书
爱心捐款感谢信
2015/01/20 职场文书
迟到检讨书
2015/01/26 职场文书
安全事故隐患排查治理制度
2015/08/05 职场文书
幼儿园小班教学反思
2016/03/03 职场文书
mybatis调用sqlserver存储过程返回结果集的方法
2021/05/08 SQL Server