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安全配置方法
Jun 16 PHP
使用PHP socke 向指定页面提交数据
Jul 23 PHP
php mssql 分页SQL语句优化 持续影响
Apr 26 PHP
PHP 加密解密内部算法
Apr 22 PHP
php单例模式实现(对象只被创建一次)
Dec 05 PHP
使用php判断浏览器的类型和语言的函数代码
Feb 28 PHP
php中is_null,empty,isset,unset 的区别详细介绍
Apr 28 PHP
数组与类使用PHP的可变变量名需要的注意的问题
Jun 20 PHP
PHP、Java des加密解密实例
Apr 27 PHP
php+ajax实现无刷新动态加载数据技术
Apr 28 PHP
php采用session实现防止页面重复刷新
Dec 24 PHP
基于PHPexecl类生成复杂的报表表头示例
Oct 14 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
JS中encodeURIComponent函数用php解码的代码
2012/03/01 PHP
php中使用preg_match_all匹配文章中的图片
2013/02/06 PHP
一个简单至极的PHP缓存类代码
2015/10/23 PHP
php采集神器cURL使用方法详解
2016/02/19 PHP
CI框架整合smarty步骤详解
2016/05/19 PHP
PHP结合Ueditor并修改图片上传路径
2016/10/16 PHP
js调试工具 Javascript Debug Toolkit 2.0.0版本发布
2008/12/02 Javascript
让浏览器非阻塞加载javascript的几种方法小结
2011/04/25 Javascript
漂亮的jquery提示效果(仿腾讯弹出层)
2013/02/05 Javascript
div当滚动到页面顶部的时候固定在顶部实例代码
2013/05/27 Javascript
JavaScript中对循环语句的优化技巧深入探讨
2014/06/06 Javascript
JS实现弹性漂浮效果的广告代码
2015/09/02 Javascript
javascript中获取class的简单实现
2016/07/12 Javascript
jQuery实现点击查看大图并以弹框的形式居中
2016/08/08 Javascript
Vue.set()实现数据动态响应的方法
2018/02/07 Javascript
layui前端时间戳转化实例
2019/11/15 Javascript
vue使用微信扫一扫功能的实现代码
2020/04/11 Javascript
如何实现echarts markline标签名显示自己想要的
2020/07/20 Javascript
[02:05]2014DOTA2西雅图国际邀请赛 BBC第二天小组赛总结
2014/07/11 DOTA
[53:38]OG vs LGD 2018国际邀请赛淘汰赛BO3 第三场 8.26
2018/08/30 DOTA
学习python处理python编码问题
2011/03/13 Python
python Matplotlib画图之调整字体大小的示例
2017/11/20 Python
python email smtplib模块发送邮件代码实例
2018/04/26 Python
读取json格式为DataFrame(可转为.csv)的实例讲解
2018/06/05 Python
python让列表倒序输出的实例
2018/06/25 Python
python实现根据文件格式分类
2019/10/31 Python
python实现滑雪游戏
2020/02/22 Python
jupyter修改文件名方式(TensorFlow)
2020/04/21 Python
pandas 像SQL一样使用WHERE IN查询条件说明
2020/06/05 Python
Django如何实现防止XSS攻击
2020/10/13 Python
暑假实习求职信范文
2013/09/22 职场文书
班会关于环保演讲稿
2013/12/29 职场文书
小班上学期评语
2014/05/05 职场文书
党员四风问题对照检查材料思想汇报
2014/09/16 职场文书
办公室主任四风问题对照检查材料思想汇报
2014/09/28 职场文书
师范生见习报告
2014/10/31 职场文书