php自定义截取中文字符串-utf8版
作者:沃茨贼死 发布时间:2024-08-27 00:36:03
标签:php,截取,中文,字符串
先说明:网上目前有很多这个问题的代码,但是很多都是复制粘贴,没有自己实践,而且代码有逻辑问题,下面的代码由我自己编写。
话不多说
/**
* 该函数是对于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;
}
来源:http://www.cnblogs.com/zw2582/p/6473666.html


猜你喜欢
- 1、matplotlib支持的颜色格式1.RGB 或者 RGBA 元组格式颜色元组中浮点型数值位于 [0, 1] 之间,e.g(0.1, 0
- 最近小爬一直思忖着如何将以前写的一些半自动化程序转为全自动化,这其中就涉及到SAP的打开和登录过程。我们都知道,SAP原生的&ldq
- rs.open sql,conn:如果sql是delete,update,insert则会返回一个关闭的记录集,在使用过程中不要来个rs.c
- 前几天,酋长同学在日志里提到了关于Google宽松的管理制度,一个产品任务下来是没有时间限制的,Google深信在有时间限制下的产品肯定是不
- 学习目的 掌握如何用ADO.NET插入新的记录 我们学得好快,今天做一个简易的新闻发布网页,可以说是个演示型的,只是让大家能理插入数据的最主
- 一、界面介绍文件导航区域 能够 浏览/定位/打开 项目文件文件编辑区域 能够 编辑 当前打开的文件控制台区域 能够:输出程序执行内容跟踪调试
- 目录match 分组re.sub 匹配和替换反向引用参考re 模块是 Python 标准库中提供的用于处理正则表达式的模块,利用
- 1、问题描述在用yolov3训练自己的数据集时,尝试加载预训练的权重,在冻结前154层的基础上,利用自己的数据集finetune。出现如下错
- python应该是近几年比较火的语言之一,很多人刚学python不知道该如何学习,尤其是没有编程基础想要从事程序员工作的小白,想必应该都会有
- 一、前言下述配置的前提是服务器上存在多个虚拟环境,且 PyCharm为专业版二、配置方法配置远程服务器配置多个解释器在配置好远程服务器后,依
- 场景描述在update表的时候出现DeadlockLoserDataAccessException异常 (Deadlock found wh
- Python实现GIF动图的提取及合成在开始之前,先来一个动图开头(预览)图片转GIF动图1、准备工作在开始合并前,先明确要转换哪些图片,以
- 在使用Python编写的应用的过程中,有时会遇到多个文件之间传递同一个全局变量的情况,此时通过配置文件定义全局变量是一个比较好的选择。首先配
- 安装模块1、找到对应的模块 http://www.python-excel.org/2、用pip install 安
- 这篇文章主要介绍了如何获取Python简单for循环索引,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- 从一个问题开始最近银行这个事情闹的比较厉害啊,很多储户的钱放在银行,就不翼而飞了,而银行还不管不问,说是用户的责任,打官司,用户还能输了,这
- 1)去重指定多列去重,这是在dataframe没有独一无二的字段作为PK(主键)时,需要指定多个字段一起作为该行的PK,在这种情况下对整体数
- 今天摸了半天摸出来的,虽然这里没啥人玩ASP,不过也是win7的问题,发发当备份问题1.An error occurre
- 文档介绍利用python写“猜数字”,“猜词语”,“谁是卧底”这三个游戏,从而快速掌握python编程的入门知识,包括python语法/列表
- 一、表单的事件监听先介绍一下几个属性的用法1、lay-filter 事件过滤器相当于选择器,layui的专属选择器2、lay-verify