最准确的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类
Nov 25 PHP
MySql 按时间段查询数据方法(实例说明)
Nov 02 PHP
ThinkPHP之foreach标签使用概述
Jun 30 PHP
在php和MySql中计算时间差的方法详解
Mar 27 PHP
基于php的CMS中展示文章类实例分析
Jun 18 PHP
PHP的文件操作与算法实现的面试题示例
Aug 10 PHP
详解WordPress中给链接添加查询字符串的方法
Dec 18 PHP
PHP之图片上传类实例代码(加了缩略图)
Jun 30 PHP
PHP文件系统管理(实例讲解)
Sep 19 PHP
php + ajax 实现的写入数据库操作简单示例
May 16 PHP
PHP如何解决微信文章图片防盗链
Dec 09 PHP
PHP实现两种排课方式
Jun 26 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 图像函数大举例(非原创)
2009/06/20 PHP
十幅图告诉你什么是PHP引用
2015/02/22 PHP
php将远程图片保存到本地服务器的实现代码
2015/08/03 PHP
javascript编程起步(第一课)
2007/01/10 Javascript
基于json的jquery地区联动效果代码
2011/07/06 Javascript
javascript变量作用域使用中常见错误总结
2013/03/26 Javascript
在Ubuntu上安装最新版本的Node.js
2014/07/14 Javascript
JavaScript判断图片是否已经加载完毕的方法汇总
2016/02/05 Javascript
jQuery实现的表头固定效果实例【附完整demo源码下载】
2016/08/01 Javascript
JS 动态判断PC和手机浏览器实现代码
2016/09/21 Javascript
javascript滚轮控制模拟滚动条
2016/10/19 Javascript
Chrome不支持showModalDialog模态对话框和无法返回returnValue问题的解决方法
2016/10/30 Javascript
vue.js实现表格合并示例代码
2016/11/30 Javascript
Nodejs 搭建简单的Web服务器详解及实例
2016/11/30 NodeJs
原生javascript移动端滑动banner效果
2017/03/10 Javascript
详解vue父子组件间传值(props)
2017/06/29 Javascript
利用vue+elementUI实现部分引入组件的方法详解
2017/11/22 Javascript
用Axios Element实现全局的请求loading的方法
2018/03/15 Javascript
微信小程序网络请求封装示例
2018/07/24 Javascript
解决vue中修改了数据但视图无法更新的情况
2018/08/27 Javascript
vue使用localStorage保存登录信息 适用于移动端、PC端
2019/05/27 Javascript
jQuery实现轮播图源码
2019/10/23 jQuery
使用py2exe在Windows下将Python程序转为exe文件
2016/03/04 Python
Python 的类、继承和多态详解
2017/07/16 Python
用Python实现KNN分类算法
2017/12/22 Python
win10下安装Anaconda的教程(python环境+jupyter_notebook)
2019/10/23 Python
Python二次规划和线性规划使用实例
2019/12/09 Python
python删除文件、清空目录的实现方法
2020/09/23 Python
党员岗位承诺口号大全
2014/03/28 职场文书
2014年五四青年节演讲比赛方案
2014/04/22 职场文书
岗位明星事迹材料
2014/05/18 职场文书
幼师中班个人总结
2015/02/12 职场文书
养成教育主题班会
2015/08/13 职场文书
python实现自动清理文件夹旧文件
2021/05/10 Python
使用Mysql计算地址的经纬度距离和实时位置信息
2022/04/29 MySQL