<?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函数的更多相关文章

  1. UTF-8、GB2312都支持的汉字截取函数

    <?php/*Utf-8.gb2312都支持的汉字截取函数cut_str(字符串, 截取长度, 开始长度, 编码);编码默认为 utf-8开始长度默认为 0*/ function cut_str ...

  2. 字符截取 支持UTF8/GBK

    );         $n = $tn = $noc = ;          || $t ==  || ( <= $t && $t <= )) {             ...

  3. php截取字符串的实例代码(支持utf-8)

    分享下php中截取字符串的例子,支持utf-8格式. 1,截取字符串 <?php $string="2006年4月我又长大了一岁!"; echo substr($string ...

  4. 在Windows的CMD中如何设置支持UTF8编码

    这个问题很多人开始都会不知道,当然包括曾经的我,当用到的时候,只好求助于伟大的股沟和度娘了.网上有设置的方法,但说明确不够详细系统,说设置字体为:Lucida Console.问题是,在默认方式下,只 ...

  5. php开启mbstring扩展并设置支持utf-8编码

    前一段时间使用一个服务的接口,因为调用接口时使用的参数里面有中文,调用接口会出现异常问题,后来才明白是编码不一致的问题.然而,我本地项目开发使用的是utf-8,接口那边也是需要utf-8的,那么问题来 ...

  6. php str_split()函数 语法

    php str_split()函数 语法 str_split()函数怎么用 php str_split()函数用于把字符串分割到数组中,语法是str_split(string,length),将字符串 ...

  7. PHP str_split() 函数

    实例 把字符串 "Hello" 分割到数组中: <?php print_r(str_split("Hello")); ?>高佣联盟 www.cgew ...

  8. 解决Delphi7的自带的UTF-8编码转换函数BUG

    Delphi7及其以下版本的 VCL 只支持 Ansi, 所以... WideString 与 UTF8String (定义与 AnsiString 相同) 并没有办法正确的在 VCL 中显示 Del ...

  9. Myth – 支持变量和数学函数的 CSS 预处理器

    Myth 是一个预处理器,有点类似于 CSS polyfill .Myth 让你写纯粹的 CSS,同时还让你可以使用类似 LESS 和 Sass 的工具.您仍然可以使用变量和数学函数,就像你在其它预处 ...

随机推荐

  1. •C#进阶系列——WebApi接口测试工具:WebApiTestClient

    阅读目录 一.WebApiTestClient介绍 二.WebApiTestClient展示 三.WebApiTestClient使用 1.如何引入组件 2.如何使用组件 四.总结 正文 前言:这两天 ...

  2. redis哈希表数据类型键的查询和删除命令

    一.查询 命令名称:hget 语法:hget key field 功能:返回哈希表key中给定域field的值 返回值: 给定域的值. 当给定域不存在或是给定key不存在时,返回nil 命令名称:hg ...

  3. shell 学习笔记7-shell-函数

    一.函数 1.什么是shell函数 把相同程序段定义成函数,可以减少整个程序的代码量,提升开发效率 增加程序的可读性,易读性,提升管理效率 可以失效程序功能模块化,使程序具备可移植性 其实linux系 ...

  4. hdu 2555

    Problem Description 杭州师范大学第29届田径运动会圆满的闭幕了,本届运动会是我校规模最大,参赛人数最多的一次运动会.在两天半时间里,由学生.教工组成的61支代表队共2664名运动员 ...

  5. 解读生命密码的基本手段 ——DNA测序技术的前世今生

    解读生命密码的基本手段 ——DNA测序技术的前世今生 任鲁风  于军 (中国科学院基因组科学及信息重点实验室,北京基因组研究所) DNA(脱氧核糖核酸)和RNA(核糖核酸)是生命体的两种最基本组成物质 ...

  6. java对日开发常用语(词汇)总结

    日语 英语 中文 备注 並び順(ならびじゅん) order by 排序   項目(こうもく)                         field 字段,域                    ...

  7. ScrollView小记

    常用代理方法: - (void)scrollViewDidScroll:(UIScrollView *)scrollView 只有  [self.scrolView setContentOffset: ...

  8. MVC-Cache-1.输出缓存(Cache:[1].输出缓存2.应用程序缓存)

    缓存前提概念: 1.使用缓存的目的就是为提供网站性能,减轻对数据库的压力,提高访问的速度. 2.如果使用缓存不当,比不使用缓存造成的影响更恶劣(缓存数据的更新不及时.缓存过多等). 3..net MV ...

  9. JAVA笔记整理(七),JAVA几个关键字

    本篇主要总结JAVA中的super.this.final.static.break.continue 1.super super主要用在继承当中,表示调用父类的构造函数. 1.如果要在子类方法中调用父 ...

  10. 个性化召回算法实践(四)——ContentBased算法

    ContentBased算法的思想非常简单:根据用户过去喜欢的物品(本文统称为 item),为用户推荐和他过去喜欢的物品相似的物品.而关键就在于这里的物品相似性的度量,这才是算法运用过程中的核心. C ...