最准确的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 相关文章推荐
Search File Contents PHP 搜索目录文本内容的代码
Feb 21 PHP
php visitFile()遍历指定文件夹函数
Aug 21 PHP
谷歌音乐搜索栏的提示功能php修正代码
May 09 PHP
逆序二维数组插入一元素的php代码
Jun 08 PHP
基于PHP 面向对象之成员方法详解
May 04 PHP
JoshChen_web格式编码UTF8-无BOM的小细节分析
Aug 16 PHP
ThinkPHP模版中导入CSS和JS文件的方法
Nov 29 PHP
php匹配字符中链接地址的方法
Dec 22 PHP
PHP的Yii框架的常用日志操作总结
Dec 08 PHP
PHP微信公众号自动发送红包API
Jun 01 PHP
PHP查询分页的实现代码
Jun 09 PHP
详解PHP设计模式之依赖注入模式
May 25 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中的strtr函数使用介绍(str_replace)
2011/10/20 PHP
php中的登陆login实例代码
2016/06/20 PHP
浅析PHP数据导出知识点
2018/02/17 PHP
php实现银联商务公众号+服务窗支付的示例代码
2019/10/12 PHP
JavaScript国旗变换效果代码
2008/08/13 Javascript
Javascript 原型和继承(Prototypes and Inheritance)
2009/04/01 Javascript
在javascript将NodeList作为Array数组处理的方法
2010/07/09 Javascript
JavaScript创建类/对象的几种方式概述及实例
2013/05/06 Javascript
当json键为数字时的取值方法解析
2013/11/15 Javascript
javascript实现密码验证
2015/11/10 Javascript
Position属性之relative用法
2015/12/14 Javascript
JS实现DIV容器赋值的方法
2015/12/14 Javascript
javacript获取当前屏幕大小
2016/06/04 Javascript
JS公共小方法之判断对象是否为domElement的实例
2016/11/25 Javascript
JS闭包与延迟求值用法示例
2016/12/22 Javascript
ng-options和ng-checked在表单中的高级运用(推荐)
2017/01/21 Javascript
jquery表单验证实例仿Toast提示效果
2017/03/03 Javascript
vue树形结构获取键值的方法示例
2018/06/21 Javascript
webpack优化的深入理解
2018/12/10 Javascript
微信小程序 云开发模糊查询实现解析
2019/09/02 Javascript
javascript设计模式之装饰者模式
2020/01/30 Javascript
浅谈python类属性的访问、设置和删除方法
2016/07/25 Python
python Pexpect 实现输密码 scp 拷贝的方法
2019/01/03 Python
实例讲解Python脚本成为Windows中运行的exe文件
2019/01/24 Python
TensorFlow tensor的拼接实例
2020/01/19 Python
python实现UDP协议下的文件传输
2020/03/20 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
2020/05/13 Python
牧马人澳大利亚官网:Wrangler澳大利亚
2019/10/08 全球购物
英国鲜花递送:Blossoming Gifts
2020/07/10 全球购物
监察建议书范文
2014/03/12 职场文书
技术负责人任命书
2014/06/05 职场文书
超市店庆活动方案
2014/08/31 职场文书
2019公司借款合同范本2篇!
2019/07/24 职场文书
JavaScript实现淘宝商品图切换效果
2021/04/29 Javascript
Python机器学习之逻辑回归
2021/05/11 Python
vue3 自定义图片放大器效果的示例代码
2022/07/23 Vue.js