最准确的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 相关文章推荐
Discuz 模板引擎的封装类代码
Jul 18 PHP
apache php模块整合操作指南
Nov 16 PHP
php中serialize序列化与json性能测试的示例分析
Apr 27 PHP
thinkphp中memcache的用法实例
Nov 29 PHP
php实现的RSS生成类实例
Apr 23 PHP
php删除数组中重复元素的方法
Dec 22 PHP
php实现带读写分离功能的MySQL类完整实例
Jul 28 PHP
详解Yii2.0使用AR联表查询实例
Jun 16 PHP
使用PHP+MySql实现微信投票功能实例代码
Sep 29 PHP
基于 Swoole 的微信扫码登录功能实现代码
Jan 15 PHP
php实现简单的守护进程创建、开启与关闭操作
Aug 13 PHP
基于PHP实现解密或加密Cloudflar邮箱保护
Jun 24 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 strcmp使用说明
2010/04/22 PHP
php 带逗号千位符数字的处理方法
2012/01/10 PHP
CI框架中zip类应用示例
2014/06/17 PHP
php安装扩展mysqli的实现步骤及报错解决办法
2017/09/23 PHP
JS 非图片动态loading效果实现代码
2010/04/09 Javascript
javascript使用中为什么10..toString()正常而10.toString()出错呢
2013/01/11 Javascript
JS Date函数整理方便使用
2013/10/23 Javascript
js螺旋动画效果的具体实例
2013/11/15 Javascript
Javascript Ajax异步读取RSS文档具体实现
2013/12/12 Javascript
JS根据变量保存方法名并执行方法示例
2014/04/04 Javascript
jQuery插件EasyUI校验规则 validatebox验证框
2015/11/29 Javascript
jquery 点击元素后,滚动条滚动至该元素位置的方法
2016/08/05 Javascript
jquery封装插件时匿名函数形参和实参的写法解释
2017/02/14 Javascript
Javascript中引用类型传递的知识点小结
2017/03/06 Javascript
Vue+Vux项目实践完整代码
2017/11/30 Javascript
NodeJS爬虫实例之糗事百科
2017/12/14 NodeJs
webpack公共组件引用路径简化小技巧
2018/06/15 Javascript
vue中el-upload上传图片到七牛的示例代码
2018/10/19 Javascript
微信小程序页面间值传递的两种方法
2018/11/26 Javascript
Vue-cli打包后部署到子目录下的路径问题说明
2020/09/02 Javascript
echarts柱状图背景重叠组合而非并列的实现代码
2020/12/10 Javascript
使用FastCGI部署Python的Django应用的教程
2015/07/22 Python
python 打印对象的所有属性值的方法
2016/09/11 Python
TensorFlow数据输入的方法示例
2018/06/19 Python
Python实现string字符串连接的方法总结【8种方式】
2018/07/06 Python
python 移动图片到另外一个文件夹的实例
2019/01/10 Python
div或img图片高度随宽度自适应的方法
2020/02/06 HTML / CSS
Turnbull & Asser官网:英国皇室御用的顶级定制衬衫
2019/01/31 全球购物
New Balance俄罗斯官方网上商店:购买运动鞋
2020/03/02 全球购物
大众服装店创业计划书范文
2014/01/01 职场文书
毕业生实习证明
2014/09/19 职场文书
党员反四风学习心得体会
2016/01/22 职场文书
html5中sharedWorker实现多页面通信的示例代码
2021/05/07 Javascript
90后经典动画片排行:《数码宝贝》第二,《小鲤鱼历险记》在榜
2022/03/18 日漫
Golang 遍历二叉树
2022/04/19 Golang
Python Matplotlib绘制动画的代码详解
2022/05/30 Python