最准确的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 相关文章推荐
isset和empty的区别
Jan 15 PHP
PHP 文件上传源码分析(RFC1867)
Oct 30 PHP
phpmyadmin 常用选项设置详解版
Mar 07 PHP
php SQL Injection with MySQL
Feb 27 PHP
php无限极分类实现的两种解决方法
Apr 28 PHP
关于查看MSSQL 数据库 用户每个表 占用的空间大小
Jun 21 PHP
使用php检测用户当前使用的浏览器是否为IE浏览器
Dec 03 PHP
Eclipse的PHP插件PHPEclipse安装和使用
Jul 20 PHP
PHP实现支持SSL连接的SMTP邮件发送类
Mar 05 PHP
基于php判断客户端类型
Oct 14 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
Jun 13 PHP
laravel框架中视图的基本使用方法分析
Nov 23 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 遍历XP文件夹下所有文件
2008/11/27 PHP
PHP下通过exec获得计算机的唯一标识[CPU,网卡 MAC地址]
2011/06/09 PHP
thinkPHP数据库增删改查操作方法实例详解
2016/12/06 PHP
php依赖注入知识点详解
2019/09/23 PHP
jQuery 技巧小结
2010/04/02 Javascript
Jquery 动态添加按钮实现代码
2010/05/06 Javascript
JavaScript中使用构造函数实现继承的代码
2010/08/12 Javascript
jquery自定义类似$.ajax()的方法实现代码
2013/08/13 Javascript
js 文本滚动效果的实例代码
2013/08/17 Javascript
详解javascript传统方法实现异步校验
2016/01/22 Javascript
jQuery+ajax实现滚动到页面底部自动加载图文列表效果(类似图片懒加载)
2016/06/07 Javascript
完美实现八种js焦点轮播图(下篇)
2020/04/20 Javascript
webpack+vue2构建vue项目骨架的方法
2018/01/09 Javascript
vue2.0 子组件改变props值,并向父组件传值的方法
2018/03/01 Javascript
解决Layui选择全部,换页checkbox复选框重新勾选的问题方法
2018/08/14 Javascript
js定义类的方法示例【ES5与ES6】
2019/07/30 Javascript
通过Kettle自定义jar包供javascript使用
2020/01/29 Javascript
Python提取Linux内核源代码的目录结构实现方法
2016/06/24 Python
python将ansible配置转为json格式实例代码
2017/05/15 Python
python链接oracle数据库以及数据库的增删改查实例
2018/01/30 Python
pycharm设置鼠标悬停查看方法设置
2019/07/29 Python
python字典排序的方法
2019/10/12 Python
Jupyter加载文件的实现方法
2020/04/14 Python
JackJones官方旗舰店:杰克琼斯男装
2018/03/27 全球购物
澳大利亚运动鞋商店:Platypus Shoes
2019/09/27 全球购物
函数只定义了一次, 调用了一次, 但编译器提示非法重定义了-什么问题?
2014/10/03 面试题
电子商务专业实习生自我鉴定
2013/09/24 职场文书
高中毕业生生活的自我评价
2013/12/08 职场文书
同事打架检讨书
2014/02/04 职场文书
环保倡议书范文
2014/05/12 职场文书
心理咨询承诺书
2014/05/20 职场文书
工商管理专业毕业生求职信
2014/05/26 职场文书
幼儿园课题方案
2014/06/09 职场文书
2015年敬老月活动总结
2015/03/27 职场文书
详解Python中__new__方法的作用
2022/03/31 Python
java中为什么说子类的构造方法默认访问的是父类的无参构造方法
2022/04/13 Java/Android