最准确的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&amp;java(二)
Oct 09 PHP
一个可以删除字符串中HTML标记的PHP函数
Oct 09 PHP
Php Cookie的一个使用注意点
Nov 08 PHP
PHP 字符串编码截取函数(兼容utf-8和gb2312)
May 02 PHP
php把数据表导出为Excel表的最简单、最快的方法(不用插件)
May 10 PHP
php编写的抽奖程序中奖概率算法
May 14 PHP
PHP 数组基本操作方法详解
Jun 17 PHP
php 常用的系统函数
Feb 07 PHP
PHP中的浅复制与深复制的实例详解
Oct 26 PHP
PHP实现Redis单据锁以及防止并发重复写入
Apr 10 PHP
PHP PDOStatement::setAttribute讲解
Feb 01 PHP
thinkphp5使html5实现动态跳转的例子
Oct 16 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 各种应用乱码问题的解决方法
2010/05/09 PHP
php读取远程gzip压缩网页的方法
2014/12/29 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
php 读取文件夹下所有图片、文件的实例
2018/10/17 PHP
PHP7数组的底层实现示例
2019/08/25 PHP
淘宝搜索框效果实现分析
2011/03/05 Javascript
javascript 原型链维护和继承详解
2014/11/26 Javascript
JavaScript中常用的六种互动方法示例
2015/03/13 Javascript
Javascript中实现String.startsWith和endsWith方法
2015/06/10 Javascript
jquery插件ajaxupload实现文件上传操作
2015/12/09 Javascript
微信小程序 绘图之饼图实现
2016/10/24 Javascript
使用Curl命令查看请求响应时间方法
2016/11/04 Javascript
nodejs连接mongodb数据库实现增删改查
2016/12/01 NodeJs
JQuery 获取多个select标签option的text内容(实例)
2017/09/07 jQuery
vue-router配合ElementUI实现导航的实例
2018/02/11 Javascript
Vue在 Nuxt.js 中重定向 404 页面的方法
2019/04/23 Javascript
layui-table获得当前行的上/下一行数据的例子
2019/09/24 Javascript
原生js实现日期选择插件
2020/05/21 Javascript
[03:37]2015国际邀请赛第四日现场精彩集锦
2015/08/08 DOTA
python追加元素到列表的方法
2015/07/28 Python
Fiddler如何抓取手机APP数据包
2016/01/22 Python
python 把数据 json格式输出的实例代码
2016/10/31 Python
Python使用wget实现下载网络文件功能示例
2018/05/31 Python
python创建与遍历List二维列表的方法
2019/08/16 Python
Python爬虫 批量爬取下载抖音视频代码实例
2019/08/16 Python
pytorch 实现模型不同层设置不同的学习率方式
2020/01/06 Python
python对批量WAV音频进行等长分割的方法实现
2020/09/25 Python
python分布式爬虫中消息队列知识点详解
2020/11/26 Python
css3实现文字扫光渐变动画效果的示例
2017/11/07 HTML / CSS
C/C++有关内存的思考题
2015/12/04 面试题
高三政治教学反思
2014/02/06 职场文书
安全伴我行演讲稿
2014/09/04 职场文书
2015年高校辅导员工作总结
2015/04/20 职场文书
男方家长婚礼答谢词
2015/09/29 职场文书
JavaScript组合继承详解
2021/11/07 Javascript
Spring Security动态权限的实现方法详解
2022/06/16 Java/Android