最准确的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 格式化数字的时候注意数字的范围
Apr 13 PHP
AMFPHP php远程调用(RPC, Remote Procedure Call)工具 快速入门教程
May 10 PHP
PHP和Shell实现检查SAMBA与NFS Server是否存在
Jan 07 PHP
php模拟登陆的实现方法分析
Jan 09 PHP
PHP输出九九乘法表代码实例
Mar 27 PHP
Linux系统下php获得系统分区信息的方法
Mar 30 PHP
Laravel 5框架学习之Eloquent 关系
Apr 09 PHP
php生成年月日下载列表的方法
Apr 24 PHP
php传值赋值和传地址赋值用法实例分析
Jun 20 PHP
抛弃 PHP 代价太高
Apr 26 PHP
JS+PHP实现用户输入数字后显示最大的值及所在位置
Jun 19 PHP
PHP实现的服务器一致性hash分布算法示例
Aug 09 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 trim 去除空字符的定义与语法介绍
2010/05/31 PHP
在html文件中也可以执行php语句的方法
2015/04/09 PHP
详解Laravel服务容器的绑定与解析
2019/11/05 PHP
完整显示当前日期和时间的JS代码
2007/09/17 Javascript
JS array 数组详解
2009/03/22 Javascript
js禁止document element对象选中文本实现代码
2013/03/21 Javascript
jquery 面包屑导航 具体实现
2013/06/05 Javascript
JavaScript闭包实例讲解
2014/04/22 Javascript
基于vue2.0+vuex的日期选择组件功能实现
2017/03/13 Javascript
js实现同一个页面,多个enter事件绑定的示例
2018/10/10 Javascript
关于node-bindings无法在Electron中使用的解决办法
2018/12/18 Javascript
记一次vue-webpack项目优化实践详解
2019/02/17 Javascript
vue前后分离调起微信支付
2019/07/29 Javascript
详解用async/await来处理异步
2019/08/28 Javascript
针对Vue路由history模式下Nginx后台配置操作
2020/10/22 Javascript
用js实现放大镜效果
2020/10/28 Javascript
python实现的二叉树定义与遍历算法实例
2017/06/30 Python
运动检测ViBe算法python实现代码
2018/01/09 Python
Python图片转换成矩阵,矩阵数据转换成图片的实例
2018/07/02 Python
python模拟登陆,用session维持回话的实例
2018/12/27 Python
Django 实现图片上传和显示过程详解
2019/07/18 Python
pycharm 安装JPype的教程
2019/08/08 Python
关于Keras模型可视化教程及关键问题的解决
2020/01/24 Python
Python实现ATM系统
2020/02/17 Python
Solid & Striped官网:美国泳装品牌
2019/06/19 全球购物
什么是Smart Navigation?
2016/07/03 面试题
材料加工硕士生求职信
2013/10/10 职场文书
师范学院毕业生求职信范文
2013/12/26 职场文书
酒店管理毕业生自荐信
2014/05/25 职场文书
2014年维修电工工作总结
2014/11/20 职场文书
2014年城管个人工作总结
2014/12/08 职场文书
2015年工程部工作总结
2015/04/30 职场文书
2015年园林绿化工作总结
2015/05/23 职场文书
中学音乐课教学反思
2016/02/18 职场文书
vue实现滑动解锁功能
2022/03/03 Vue.js
SpringBoot2零基础到精通之异常处理与web原生组件注入
2022/03/22 Java/Android