最准确的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实现MVC开发得最简单的方法――模型
Apr 10 PHP
几种有用的变型 PHP中循环语句的用法介绍
Jan 30 PHP
非常实用的php弹出错误警告函数扩展性强
Jan 17 PHP
php提取字符串中网站url地址的方法
Dec 03 PHP
PHP使用memcache缓存技术提高响应速度的方法
Dec 26 PHP
php将12小时制转换成24小时制的方法
Mar 31 PHP
php is_writable判断文件是否可写实例代码
Oct 13 PHP
php实现等比例不失真缩放上传图片的方法
Nov 14 PHP
PHP针对中英文混合字符串长度判断及截取方法示例
Mar 31 PHP
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
Dec 07 PHP
解决在Laravel 中处理OPTIONS请求的问题
Oct 11 PHP
php引用传递
Apr 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
初学CAKEPHP 基础教程
2009/11/02 PHP
PHP Parse Error: syntax error, unexpected $end 错误的解决办法
2012/06/05 PHP
浅谈php://filter的妙用
2019/03/05 PHP
12个非常有创意的JavaScript小游戏
2010/03/18 Javascript
jquery.cookie.js 操作cookie实现记住密码功能的实现代码
2011/04/27 Javascript
jQuery中的height innerHeight outerHeight区别示例介绍
2014/06/15 Javascript
jQuery制作效果超棒的手风琴折叠菜单
2015/04/03 Javascript
javascript表格的渲染组件
2015/07/03 Javascript
一个简单不报错的summernote 图片上传案例
2016/07/11 Javascript
微信小程序 侧滑删除(左滑删除)
2017/05/23 Javascript
easyui下拉框动态级联加载的示例代码
2017/11/29 Javascript
vue2.0组件之间传值、通信的多种方式(干货)
2018/02/10 Javascript
基于JavaScript实现幸运抽奖页面
2020/07/05 Javascript
微信小程序实现topBar底部选择栏效果
2018/07/20 Javascript
基于bootstrap页面渲染的问题解决方法
2018/08/09 Javascript
BootStrap table实现表格行拖拽效果
2018/12/01 Javascript
实例分析JS中的相等性判断===、 ==和Object.is()
2019/11/17 Javascript
关于vue利用postcss-pxtorem进行移动端适配的问题
2019/11/20 Javascript
VUE table表格动态添加一列数据,新增的这些数据不可以编辑(v-model绑定的数据不能实时更新)
2020/04/03 Javascript
JavaScript实现与web通信的方法详解
2020/08/07 Javascript
[57:50]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第二局
2016/03/05 DOTA
[01:48]2018DOTA2亚洲邀请赛主赛事第二日五佳镜头 VG完美团战逆转TNC
2018/04/05 DOTA
[01:14]2019完美世界城市挑战赛(秋季赛)全国总决赛精彩花絮
2020/01/08 DOTA
python3编写C/S网络程序实例教程
2014/08/25 Python
基于Python pip用国内镜像下载的方法
2018/06/12 Python
python正则表达式之对号入座篇
2018/07/24 Python
pycharm: 恢复(reset) 误删文件的方法
2018/10/22 Python
Python数据可视化之画图
2019/01/15 Python
Python使用Pandas读写Excel实例解析
2019/11/19 Python
Css3实现无缝滚动防抖
2020/09/14 HTML / CSS
html5/css3响应式页面开发总结
2018/10/16 HTML / CSS
Html5新增标签与样式及让元素水平垂直居中
2019/07/11 HTML / CSS
JD Sports马来西亚:英国领先的运动鞋和运动服饰零售商
2018/03/13 全球购物
骨干教师培训感言
2014/01/16 职场文书
不尊敬老师的检讨书
2014/12/21 职场文书
全陪导游词
2015/02/04 职场文书