最准确的php截取字符串长度函数


Posted in PHP onOctober 29, 2015

说是最精确截取长度,其实我也不敢确定是否是最精确的,具体有多精确看下面的效果就知道了:
先上测试用的字符串:

<?php 
header("Content-Type:text/html;charset=utf-8"); 
echo cn_substr_utf8('我是一个,和哈,哦也,,国家!',12); 
echo '<br />',cn_substr_utf8('ai\'2145m a ch3我[是一,个,和哈,哦也,,国家!',12); 
echo '<br />',cn_substr_utf8('【我,是一,个,和哈,哦也,,国家!',12); 
echo '<br />',cn_substr_utf8('我是一,个,和哈,哦也,,国家!',12); 
echo '<br />',cn_substr_utf8('我是,一,个,和哈,哦也,,国家!',12); 
echo '<br />',cn_substr_utf8('我,是,一,个,和哈,哦也,,国家!',12); 
echo '<br />',cn_substr_utf8('我是asd一,个,和哈,哦也,,国家!',12); 
echo '<br />',cn_substr_utf8('【我i\'m[是一,个,和哈,哦也,,国家!',12); 
echo '<br />',cn_substr_utf8('【i\'m a ch我[是一,个,和哈,哦也,,国家!',12); 
echo '<br />',cn_substr_utf8('【i\'2145m a ch3我[是一,个,和哈,哦也,,国家!',12);

下面是精确截取字符串的效果图:

最准确的php截取字符串长度函数

具体函数代码如下:

//utf-8中文截取,单字节截取模式 
function cn_substr_utf8($str,$length,$append='...',$start=0){ 
  if(strlen($str)<$start+1){ 
    return ''; 
  } 
  preg_match_all("/./su",$str,$ar); 
  $str2=''; 
  $tstr=''; 
  //www.phpernote.com 
  for($i=0;isset($ar[0][$i]);$i++){ 
    if(strlen($tstr)<$start){ 
      $tstr.=$ar[0][$i]; 
    }else{ 
      if(strlen($str2)<$length + strlen($ar[0][$i])){ 
        $str2.=$ar[0][$i]; 
      }else{ 
        break; 
      } 
    } 
  } 
  return $str==$str2?$str2:$str2.$append; 
}

如果大家认为还不够准确大家可以在此基础上进行改进,或者是创新,希望这篇关于php截取字符串长度函数的文章对大家的学习有所帮助。

PHP 相关文章推荐
让你的PHP同时支持GIF、png、JPEG
Oct 09 PHP
PHP mb_convert_encoding 获取字符串编码类型实现代码
Apr 26 PHP
php不用正则验证真假身份证
Nov 06 PHP
ThinkPHP查询返回简单字段数组的方法
Aug 25 PHP
PHP对象相互引用的内存溢出实例分析
Aug 28 PHP
使用PHP实现阻止用户上传成人照片或者裸照
Dec 25 PHP
php反射类ReflectionClass用法分析
May 12 PHP
PHP实现清除MySQL死连接的方法
Jul 23 PHP
PHP HTTP 认证实例详解
Nov 03 PHP
实例分析10个PHP常见安全问题
Jul 09 PHP
PHP面向对象程序设计中的self、static、parent关键字用法分析
Aug 14 PHP
阿里对象存储OSS在laravel框架中的使用方法
Oct 13 PHP
php关键字仅替换一次的实现函数
Oct 29 #PHP
深入浅析PHP7.0新特征(五大新特征)
Oct 29 #PHP
适用于初学者的简易PHP文件上传类
Oct 29 #PHP
php实现网站文件批量压缩下载功能
Oct 28 #PHP
php简单日历函数
Oct 28 #PHP
php将数组存储为文本文件方法汇总
Oct 28 #PHP
php如何获取文件的扩展名
Oct 28 #PHP
You might like
PHP字符串长度计算 - strlen()函数使用介绍
2013/10/15 PHP
Ajax提交表单时验证码自动验证 php后端验证码检测
2016/07/20 PHP
利用php实现一周之内自动登录存储机制(cookie、session、localStorage)
2016/10/31 PHP
PHP5.0~5.6 各版本兼容性cURL文件上传功能实例分析
2018/05/11 PHP
再谈Yii Framework框架中的事件event原理与应用
2020/04/07 PHP
PHP dirname(__FILE__)原理及用法解析
2020/10/28 PHP
封装好的省市地区联动控件附下载
2007/08/13 Javascript
javascript 原型模式实现OOP的再研究
2009/04/09 Javascript
javascript 读取图片文件的大小
2009/06/25 Javascript
使用Firebug对js进行断点调试的图文方法
2011/04/02 Javascript
JavaScript 垃圾回收机制分析
2013/10/10 Javascript
JS Canvas定时器模拟动态加载动画
2016/09/17 Javascript
深入理解Node.js的HTTP模块
2016/10/12 Javascript
jquery 实时监听输入框值变化的完美方法(必看)
2017/01/26 Javascript
touch.js 拖动、缩放、旋转 (鼠标手势)功能代码
2017/02/04 Javascript
JS实现禁止高频率连续点击的方法【基于ES6语法】
2017/04/25 Javascript
arcgis for js栅格图层叠加(Raster Layer)问题
2017/11/22 Javascript
vue-cli脚手架搭建的项目去除eslint验证的方法
2018/09/29 Javascript
详解如何用webpack4从零开始构建react开发环境
2019/01/27 Javascript
koa2 从入门到精通(小结)
2019/07/23 Javascript
js获取图片的base64编码并压缩
2020/12/05 Javascript
Python守护线程用法实例
2017/06/23 Python
python3 pillow模块实现简单验证码
2019/10/31 Python
Python 如何操作 SQLite 数据库
2020/08/17 Python
python的setattr函数实例用法
2020/12/16 Python
matplotlib阶梯图的实现(step())
2021/03/02 Python
英国马莎百货官网:Marks & Spencer
2016/07/29 全球购物
Spartoo美国:欧洲排名第一的在线时装零售商
2019/12/12 全球购物
Monica Vinader官网:英国轻奢珠宝品牌
2020/02/05 全球购物
新闻系毕业生推荐信
2013/11/16 职场文书
公司年会主持词
2014/03/22 职场文书
党员学习中共十八大报告思想汇报
2014/09/15 职场文书
违反单位工作制度检讨书
2014/10/25 职场文书
物业前台接待岗位职责
2015/04/03 职场文书
描写九月优美句子(39条)
2019/09/11 职场文书
能让Python提速超40倍的神器Cython详解
2021/06/24 Python