最准确的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编程之高级技巧——利用Mysql函数
Oct 09 PHP
php字符串截取中文截取2,单字节截取模式
Dec 10 PHP
PHP中PDO基础教程 入门级
Sep 04 PHP
PHP代码网站如何防范SQL注入漏洞攻击建议分享
Mar 01 PHP
PHP递归调用的小技巧讲解
Feb 19 PHP
PHP无法访问远程mysql的问题分析及解决
May 16 PHP
php导入导出excel实例
Oct 25 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(四)
Jun 23 PHP
PHP集成百度Ueditor 1.4.3
Nov 23 PHP
win7系统配置php+Apache+mysql环境的方法
Aug 21 PHP
php + WebUploader实现图片批量上传功能
May 06 PHP
PHP实现腾讯短网址生成api接口实例
Dec 08 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中使用Sockets 从Usenet中获取文件
2008/01/10 PHP
微信支付之JSAPI公众号支付详解
2019/05/15 PHP
实现laravel 插入操作日志到数据库的方法
2019/10/11 PHP
use jscript List Installed Software
2007/06/11 Javascript
为JavaScript类型增加方法的实现代码(增加功能)
2011/12/29 Javascript
主页面中的两个iframe实现鼠标拖动改变其大小
2013/04/16 Javascript
浅谈Javascript数据属性与访问器属性
2016/07/26 Javascript
Angular 4依赖注入学习教程之组件服务注入(二)
2017/06/04 Javascript
微信小程序中页面FOR循环和嵌套循环
2017/06/21 Javascript
layui从数据库中获取复选框的值并默认选中方法
2018/08/15 Javascript
刷新页面后让控制台的js代码继续执行
2019/09/20 Javascript
Python下的subprocess模块的入门指引
2015/04/16 Python
Python下的常用下载安装工具pip的安装方法
2015/11/13 Python
如何在python字符串中输入纯粹的{}
2018/08/22 Python
用Python实现筛选文件脚本的方法
2018/10/27 Python
Python实现简易过滤删除数字的方法小结
2019/01/09 Python
python的set处理二维数组转一维数组的方法示例
2019/05/31 Python
使用Python的Turtle绘制哆啦A梦实例
2019/11/21 Python
解决tensorboard多个events文件显示紊乱的问题
2020/02/15 Python
使用Python获取当前工作目录和执行命令的位置
2020/03/09 Python
Python性能分析工具py-spy原理用法解析
2020/07/27 Python
详解vscode实现远程linux服务器上Python开发
2020/11/10 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
2021/03/04 Python
英国现代绅士品牌:Hackett
2017/12/17 全球购物
香港唯港荟酒店预订:Hotel ICON
2018/03/27 全球购物
美国摩托车头盔、零件、齿轮及配件商店:Cycle Gear
2019/06/12 全球购物
日本AOKI官方商城:AOKI西装
2020/06/11 全球购物
教师的实习鉴定
2013/12/15 职场文书
党员培训思想汇报
2014/01/07 职场文书
会计专业求职信
2014/08/10 职场文书
关心下一代工作先进事迹
2014/08/15 职场文书
销售顾问工作计划书
2014/09/15 职场文书
教师学习中国梦心得体会
2016/01/05 职场文书
《所见》教学反思
2016/02/23 职场文书
js之ajax文件上传
2021/05/13 Javascript
PyQt5结合QtDesigner实现文本框读写操作
2021/06/11 Python