php按字符无乱码截取中文的方法


Posted in PHP onMarch 27, 2015

本文实例讲述了php按字符无乱码截取中文的方法。分享给大家供大家参考。具体实现方法如下:

<?php
//$str 待截取的字符串
//$len 截取的字符个数
//$chars 已经截取的字符数
//$res  保存的字符串
//$chars 保存已经截取的字符串个数
//$offset 截取的偏移量
//$length 字符串的字节数
//若$len>$str的字符个数,造成无谓的while循环,($offset<$length限定)
function utf8sub($str,$len){
  if($len<=0){
    return ;
  }
  $res="";
  $offset=0;
  $chars=0;
  $length=strlen($str);
  while($chars<$len && $offset<$length){
    $hign=decbin(ord(substr($str,$offset,1)));
      if(strlen($hign)<8){
        $count=1;
      }elseif(substr($hign,0,3)=="110"){
        $count=2;
      }elseif(substr($hign,0,4)=="1110"){
        $count=3;
      }elseif(substr($hign,0,5)=="11110"){
        $count=4;
      }elseif(substr($hign,0,6)=="111110"){
        $count=5;
      }elseif(substr($hign,0,7)=="1111110"){
        $count=6;
      }
    $res.=substr($str,$offset,$count);
    $offset+=$count;
    $chars+=1;
  }
  return $res;
}
function utf8sub1($str,$len){
  $chars=0;
  $res="";
  $offset=0;
  $length=strlen($str);
  while($chars<$len && $offset<$length){
    $hign=decbin(ord(substr($str,$offset,1)));
    if(strlen($hign)<8){
      $count=1;
    }elseif($hign & "11100000"=="11000000"){
      $count=2;
    }elseif($hign & "11110000"=="11100000"){
      $count=3;
    }elseif($hign & "11111000"=="11110000"){
      $count=4;
    }elseif($hign & "11111100"=="11111000"){
      $count=5;
    }elseif($hign & "11111110"=="11111100"){
      $count=6;
    }
    $res.=substr($str,$offset,$count);
    $chars++;
    $offset+=$count;
  }
  return $res;
}
$a="中华ah人民hdj";
echo utf8sub($a,5);
?>

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
PHP树的代码,可以嵌套任意层
Oct 09 PHP
改变Apache端口等配置修改方法
Jun 05 PHP
PHP 的ArrayAccess接口 像数组一样来访问你的PHP对象
Oct 12 PHP
PHP 时间日期操作实战
Aug 26 PHP
PHP递归调用的小技巧讲解
Feb 19 PHP
PHP字符串的编码问题的详细介绍
Apr 27 PHP
FireFox浏览器使用Javascript上传大文件
Oct 30 PHP
完美解决thinkphp验证码出错无法显示的方法
Dec 09 PHP
ioncube_loader_win_5.2.dll的错误解决方法
Jan 04 PHP
Zend Framework框架路由机制代码分析
Mar 22 PHP
PHP命名空间与自动加载机制的基础介绍
Aug 25 PHP
PHP使用观察者模式处理异常信息的方法详解
Sep 24 PHP
php实现字符串翻转的方法
Mar 27 #PHP
Ubuntu中启用php的mail()函数并解决发送邮件速度慢问题
Mar 27 #PHP
php字符串函数学习之substr()
Mar 27 #PHP
php字符串函数学习之strstr()
Mar 27 #PHP
php判断一个数组是否为有序的方法
Mar 27 #PHP
PHP实现WebService的简单示例和实现步骤
Mar 27 #PHP
使用PHPExcel操作Excel用法实例分析
Mar 26 #PHP
You might like
优化PHP代码的53条建议
2008/03/27 PHP
VIM中设置php自动缩进为4个空格的方法详解
2013/06/14 PHP
PHP记录页面停留时间的方法
2016/03/30 PHP
tagName的使用,留一笔
2006/06/26 Javascript
JS打开图片另存为对话框实现代码
2012/12/26 Javascript
浅析jQuery中常用的元素查找方法总结
2013/07/04 Javascript
原生javaScript做得动态表格(注释写的很清楚)
2013/12/29 Javascript
深入了解JavaScript中的Symbol的使用方法
2015/07/28 Javascript
js表单中选择框值的获取及表单的序列化
2015/12/17 Javascript
IOS中safari下的select下拉菜单文字过长不换行的解决方法
2016/09/26 Javascript
vue router路由嵌套不显示问题的解决方法
2017/06/17 Javascript
在微信小程序中渲染HTML内容的方法示例
2018/09/28 Javascript
vue双向绑定及观察者模式详解
2019/03/19 Javascript
jquery登录的异步验证操作示例
2019/05/09 jQuery
浅谈numpy库的常用基本操作方法
2018/01/09 Python
Python元组及文件核心对象类型详解
2018/02/11 Python
python 提取key 为中文的json 串方法
2018/12/31 Python
django url到views参数传递的实例
2019/07/19 Python
python tkinter canvas使用实例
2019/11/04 Python
PageFactory设计模式基于python实现
2020/04/14 Python
Python基于pandas爬取网页表格数据
2020/05/11 Python
如何在scrapy中集成selenium爬取网页的方法
2020/11/18 Python
开发中都用到了那些设计模式?用在什么场合?
2014/08/21 面试题
Java里面如何创建一个内部类的实例
2015/01/19 面试题
双创工作实施方案
2014/03/26 职场文书
保密协议书范本
2014/04/22 职场文书
合作协议书范文
2014/08/20 职场文书
装饰公司活动策划方案
2014/08/23 职场文书
中队活动总结
2014/08/27 职场文书
党的群众路线教育实践活动个人自我剖析材料
2014/10/07 职场文书
个人合伙协议书范本
2014/10/14 职场文书
四年级学生期末评语
2014/12/26 职场文书
学生不参加考试检讨书
2015/02/19 职场文书
消防隐患整改通知书
2015/04/22 职场文书
Java生成读取条形码和二维码的简单示例
2021/07/09 Java/Android
Python面向对象编程之类的概念
2021/11/01 Python