最准确的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 相关文章推荐
数字转英文
Dec 06 PHP
php仿QQ验证码的实例分析
Jul 01 PHP
PHP常用编译参数中文说明
Sep 27 PHP
html静态页面调用php文件的方法
Nov 13 PHP
php中异常处理方法小结
Jan 09 PHP
深入php内核之php in array
Nov 10 PHP
PHP符合PSR编程规范的实例分享
Dec 21 PHP
详谈PHP中的密码安全性Password Hashing
Feb 04 PHP
PHP房贷计算器实例代码,等额本息,等额本金
Apr 01 PHP
PHP批量删除jQuery操作
Jul 23 PHP
PHP实现的多维数组去重操作示例
Jul 21 PHP
aec加密 php_php aes加密解密类(兼容php5、php7)
Mar 14 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
Notice: Trying to get property of non-object problem(PHP)解决办法
2012/03/11 PHP
关于php正则匹配汉字的方法介绍
2013/04/25 PHP
PHP获取文件相对路径的方法
2015/02/26 PHP
thinkPHP删除前弹出确认框的简单实现方法
2016/05/16 PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
2016/11/15 PHP
PHP实现使用DOM将XML数据存入数组的方法示例
2017/09/27 PHP
javascript 尚未实现错误解决办法
2008/11/27 Javascript
JQuery获取元素文档大小、偏移和位置和滚动条位置的方法集合
2010/01/12 Javascript
关于jquery动态增减控件的一些想法和小插件
2010/08/01 Javascript
jsTree 基于JQuery的排序节点 Bug
2011/07/26 Javascript
jQuery获取样式中的背景颜色属性值/颜色值
2012/12/17 Javascript
Js base64 加密解密介绍
2013/10/11 Javascript
jQuery搜索子元素的方法
2015/02/10 Javascript
jQuery实现单击弹出Div层窗口效果(可关闭可拖动)
2015/09/19 Javascript
jQuery实现的个性化返回底部与返回顶部特效代码
2015/10/30 Javascript
Nodejs从有门道无门菜鸟起飞必看教程
2016/07/20 NodeJs
jQuery实现鼠标经过像翻页和描点链接效果
2016/08/08 Javascript
js实现自定义进度条效果
2017/03/15 Javascript
Express进阶之log4js实用入门指南
2018/02/10 Javascript
jQuery实现鼠标响应式透明度渐变动画效果示例
2018/02/13 jQuery
jquery拖拽自动排序插件使用方法详解
2020/07/20 jQuery
three.js 制作动态二维码的示例代码
2020/07/31 Javascript
python套接字流重定向实例汇总
2016/03/03 Python
Python代码解决RenderView窗口not found问题
2016/08/28 Python
python批量替换页眉页脚实例代码
2018/01/22 Python
Python Json序列化与反序列化的示例
2018/01/31 Python
Python常见数字运算操作实例小结
2019/03/22 Python
春节到了 教你使用python来抢票回家
2020/01/06 Python
Python网络爬虫四大选择器用法原理总结
2020/06/01 Python
详解HTML5中CSS外观属性
2020/09/10 HTML / CSS
华为旗下电子商务平台:华为商城
2016/08/06 全球购物
煤矿安全承诺书
2014/05/22 职场文书
对照四风自我剖析材料
2014/10/07 职场文书
干部作风建设心得体会
2014/10/22 职场文书
2015学校年度工作总结
2015/05/11 职场文书
Redis集群节点通信过程/原理流程分析
2022/03/18 Redis