最准确的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 魔术函数使用说明
May 14 PHP
pdo中使用参数化查询sql
Aug 11 PHP
比较discuz和ecshop的截取字符串函数php版
Sep 03 PHP
PHP 面向对象详解
Sep 13 PHP
PHP中数字检测is_numeric与ctype_digit的区别介绍
Oct 04 PHP
php include和require的区别深入解析
Jun 17 PHP
php导入csv文件碰到乱码问题的解决方法
Feb 10 PHP
php采用curl访问域名返回405 method not allowed提示的解决方法
Jun 26 PHP
百度地图经纬度转换到腾讯地图/Google 对应的经纬度
Aug 28 PHP
PHP闭包函数传参及使用外部变量的方法
Mar 15 PHP
php脚本守护进程原理与实现方法详解
Jul 20 PHP
php mysql数据库操作类(实例讲解)
Aug 06 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
常用表单验证类,有了这个,一般的验证就都齐了。
2006/12/06 PHP
php二维数组排序与默认自然排序的方法介绍
2013/04/27 PHP
PHP编程风格规范分享
2014/01/15 PHP
php计算数组不为空元素个数的方法
2014/01/27 PHP
理解Javascript_10_对象模型
2010/10/16 Javascript
原生javascript兼容性测试实例
2013/07/01 Javascript
javascript继承的六大模式小结
2015/04/13 Javascript
Javascript中的数据类型之旅
2015/10/18 Javascript
JavaScript中获取纯正的undefined的方法
2016/03/06 Javascript
jQuery 中ajax异步调用的四种方式
2016/06/28 Javascript
微信小程序多张图片上传功能
2017/06/07 Javascript
原生js二级联动效果
2017/06/20 Javascript
Vue.js中extend选项和delimiters选项的比较
2017/07/17 Javascript
9102年webpack4搭建vue项目的方法步骤
2019/02/20 Javascript
你准备好迎接vue3.0了吗
2020/04/28 Javascript
微信小程序报错: thirdScriptError的错误问题
2020/06/19 Javascript
原生JavaScript实现幻灯片效果
2021/02/19 Javascript
[05:46]DOTA2英雄梦之声_第18期_陈
2014/06/20 DOTA
Python urlopen()函数 示例分享
2014/06/12 Python
python 文件操作api(文件操作函数)
2016/08/28 Python
python实现linux下抓包并存库功能
2018/07/18 Python
python爬取cnvd漏洞库信息的实例
2019/02/14 Python
Python快速转换numpy数组中Nan和Inf的方法实例说明
2019/02/21 Python
对python3 sort sorted 函数的应用详解
2019/06/27 Python
Python使用20行代码实现微信聊天机器人
2020/06/05 Python
德国狗狗用品在线商店:Schecker
2017/03/17 全球购物
Sony C++笔试题
2013/03/10 面试题
培训演讲稿范文
2014/01/12 职场文书
劲霸男装广告词
2014/03/21 职场文书
大专生自荐书范文
2014/06/22 职场文书
2014年监理工作总结范文
2014/11/17 职场文书
试用期旷工辞退通知书
2015/04/17 职场文书
2015教师个人德育工作总结
2015/07/22 职场文书
团结友爱主题班会
2015/08/13 职场文书
自定义函数实现单词排序并运用于PostgreSQL(实现代码)
2021/04/22 PostgreSQL
SpringCloud中分析讲解Feign组件添加请求头有哪些坑梳理
2022/06/21 Java/Android