支持utf8的str_split函数
<?php
header("Content-type: text/html; charset=utf-8");
/**
* 按字节数对字符串进行分片
* @param $str 需要分片的字符串
* @param $length 每片字符串的字节数
* @return 分片后的数组
*/
function utf8_str_split($str,$length) {
if (!preg_match("/([\x81-\xfe][\x40-\xfe])/", $str, $match)) return str_split($str, $length); //不包含中文的字符串
$str_length = strlen($str);
if($str_length <= $length) return array($str);
$results = array();
$tmp_str = '';
$tmp_str_length = 0;
for ($i=0; $i < $str_length; $i++) {
$ord = ord($str[$i]);
if($ord < 128) { //单字节 0~127
$tmp_str .= $str[$i];
$tmp_str_length += 1;
}elseif($ord < 224) { //双字节 192~223
$tmp_str .= $str[$i].$str[$i+1];
$i += 1;
$tmp_str_length += 2;
}elseif($ord < 240) { //三字节 224~237
$tmp_str .= $str[$i].$str[$i+1].$str[$i+2];
$i += 2;
$tmp_str_length += 3;
}elseif ($ord < 248) { //四字节 240~247
$tmp_str .= $str[$i].$str[$i+1].$str[$i+2].$str[$i+3];
$i += 3;
$tmp_str_length += 4;
}
//判断下一次截取时 字符字节数是否会大于需要的字节数 或者已截取到最后字节
if(($tmp_str_length+4) > $length || ($i+1) == $str_length) {
$results[] = $tmp_str;
$tmp_str = '';
$tmp_str_length = 0;
}
}
return $results;
}
$a = '截取的变量是宽度width而不是长度length。';
$length = 10;
print_r(utf8_str_split($a,$length));
支持utf8的str_split函数的更多相关文章
- UTF-8、GB2312都支持的汉字截取函数
<?php/*Utf-8.gb2312都支持的汉字截取函数cut_str(字符串, 截取长度, 开始长度, 编码);编码默认为 utf-8开始长度默认为 0*/ function cut_str ...
- 字符截取 支持UTF8/GBK
); $n = $tn = $noc = ; || $t == || ( <= $t && $t <= )) { ...
- php截取字符串的实例代码(支持utf-8)
分享下php中截取字符串的例子,支持utf-8格式. 1,截取字符串 <?php $string="2006年4月我又长大了一岁!"; echo substr($string ...
- 在Windows的CMD中如何设置支持UTF8编码
这个问题很多人开始都会不知道,当然包括曾经的我,当用到的时候,只好求助于伟大的股沟和度娘了.网上有设置的方法,但说明确不够详细系统,说设置字体为:Lucida Console.问题是,在默认方式下,只 ...
- php开启mbstring扩展并设置支持utf-8编码
前一段时间使用一个服务的接口,因为调用接口时使用的参数里面有中文,调用接口会出现异常问题,后来才明白是编码不一致的问题.然而,我本地项目开发使用的是utf-8,接口那边也是需要utf-8的,那么问题来 ...
- php str_split()函数 语法
php str_split()函数 语法 str_split()函数怎么用 php str_split()函数用于把字符串分割到数组中,语法是str_split(string,length),将字符串 ...
- PHP str_split() 函数
实例 把字符串 "Hello" 分割到数组中: <?php print_r(str_split("Hello")); ?>高佣联盟 www.cgew ...
- 解决Delphi7的自带的UTF-8编码转换函数BUG
Delphi7及其以下版本的 VCL 只支持 Ansi, 所以... WideString 与 UTF8String (定义与 AnsiString 相同) 并没有办法正确的在 VCL 中显示 Del ...
- Myth – 支持变量和数学函数的 CSS 预处理器
Myth 是一个预处理器,有点类似于 CSS polyfill .Myth 让你写纯粹的 CSS,同时还让你可以使用类似 LESS 和 Sass 的工具.您仍然可以使用变量和数学函数,就像你在其它预处 ...
随机推荐
- Spring全框架讲解
Day 01: https://blog.csdn.net/sinat_29211659/article/details/81335229
- sql语句中包含引号处理方法
1. 背景 在使用Python脚本向数据库导入日志文件时候,突然报错. 2. 解决思路 查看messages文件,发现有一条语句里包含单引号. 查看sql语句,是使用单引号标注str类型. 3. 得出 ...
- Java构建器(多个构造器参数)
今天看netty权威指南,第一次听说构建器,百度了几个博客,但是并没有通俗易懂一点儿的,综合别人的博客,总结如下: 1. 构建器是什么? 当创建对象需要传入多个参数的时候我们通常会根据参数的数量写不同 ...
- 将py文件打包到docx
import os class FileDownload: def __init__(self): self.exclude = ['db.sqlite3', 'logs', 'media', 'Pi ...
- vue中修改第三方组件的样式并不造成污染
vue引用了第三方组件, 需要在组件中局部修改第三方组件的样式, 而又不想去除scoped属性造成组件之间的样式污染. 此时只能通过>>>,穿透scoped. 但是,在sass中存在 ...
- 两通道实信号使用一个FFT同时计算算法
前言 在工程的实际应用场景中,往往是需要最省资源量.而DSP资源和BRAM资源对FPGA来说弥足珍贵. 对于同时存在多个通道的实信号需要做FFT而言,常规做法是每个通道用一个FFT IP,FFT IP ...
- 【日语】日语N5学习
副词与连接词 ~から: 从-(表示时间.场所起点) ~まで: 到-(表示时间.场所终点) と: 和(并列时用) えーと: 嗯 いっしょに: 一起 ちょっと: 一点儿 いつも: 经常.总是 ときどき: ...
- 查询自动生成Guid列
--newid()可以在查询的时候自动生成Guid列 ' ordey by Random --创建对应的列 用 uniqueidentifier 类型 IF NOT EXISTS ( SELECT * ...
- 记录java+testng运行selenium(一)
整体的流程为下图 整体思路为: 1. 由程序开始运行时去读取ini文件中存储的浏览器及需要打开的url 2. test运行时通过description实现数据驱动,主要做两件事 2.1 第一件事为:读 ...
- CEIWEI CommMonitor 串口监控精灵v11.0 串口过滤 串口监控
CEIWEI CommMonitor 串行端口监控精灵是用于 RS232 / RS422 / RS485 端口监控的专业 强大的系统实用程序软件.CEIWEI CommMonitor 监控显示, ...