最准确的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简单系统数据添加以及数据删除模块源文件下载
Jun 07 PHP
逆序二维数组插入一元素的php代码
Jun 08 PHP
PHP超级全局变量数组小结
Oct 04 PHP
基于php中使用excel的简单介绍
Aug 02 PHP
PHP fastcgi模式上传大文件(大约有300多K)报错
Sep 28 PHP
php中实现获取随机数组列表的自定义函数
Apr 02 PHP
wampserver改变默认网站目录的办法
Aug 05 PHP
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
Nov 15 PHP
PHP实现原生态图片上传封装类方法
Nov 08 PHP
PHP基于IMAP收取邮件的方法示例
Aug 07 PHP
PHP+Session防止表单重复提交的解决方法
Apr 09 PHP
PHP中“=&gt;
Mar 01 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实现验证码功能
2006/10/09 PHP
PHP开发中常用的十个代码样例
2016/02/02 PHP
微信支付的开发流程详解
2016/09/13 PHP
php中数组最简单的使用方法
2020/12/27 PHP
图片格式的JavaScript和CSS速查手册
2007/08/20 Javascript
js的一些常用方法小结
2011/06/29 Javascript
原生js拖拽(第一课 未兼容)拖拽思路
2013/03/29 Javascript
5个书写JavaScript代码的坏习惯,看看你中枪了没?
2014/11/06 Javascript
JS实现超炫网页烟花动画效果的方法
2015/03/02 Javascript
js css+html实现简单的日历
2016/07/14 Javascript
简单的网页广告特效实例
2017/08/19 Javascript
使用JavaScript实现在页面中显示距离2017年中秋节的天数
2017/09/26 Javascript
Vue中Table组件Select的勾选和取消勾选事件详解
2019/03/19 Javascript
Vue利用Blob下载原生二进制数组文件
2019/09/25 Javascript
vue.js循环radio的实例
2019/11/07 Javascript
js实现单元格拖拽效果
2020/02/10 Javascript
[09:13]2014DOTA2国际邀请赛 中国区预选赛coser表演
2014/05/23 DOTA
使用Python设置tmpfs来加速项目的教程
2015/04/17 Python
python批量下载抖音视频
2019/06/17 Python
python调用webservice接口的实现
2019/07/12 Python
用sqlalchemy构建Django连接池的实例
2019/08/29 Python
详解Django admin高级用法
2019/11/06 Python
使用Python实现画一个中国地图
2019/11/23 Python
如何利用pycharm进行代码更新比较
2020/11/04 Python
python3 使用ssh隧道连接mysql的操作
2020/12/05 Python
全球知名旅游社区法国站点:TripAdvisor法国
2016/08/03 全球购物
美国专业级皮肤病和spa品质护肤品的高级零售网站:SkinCareRx
2017/02/06 全球购物
C++是不是类型安全的
2014/02/18 面试题
一套带网友答案的.NET笔试题
2016/12/06 面试题
vue路由实现登录拦截
2021/03/24 Vue.js
学校司机岗位职责
2013/11/14 职场文书
战友聚会邀请函
2014/01/18 职场文书
导游词之南京汤山温泉
2019/11/26 职场文书
PyCharm 安装与使用配置教程(windows,mac通用)
2021/05/12 Python
不负正版帝国之名 《重返帝国》引领SLG手游制作新的标杆
2022/04/07 其他游戏
Python实现对齐打印 format函数的用法
2022/04/28 Python