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中用加号与用array_merge合并数组的区别深入分析
Jun 03 PHP
php获取字段名示例分享
Mar 03 PHP
php中实现精确设置session过期时间的方法
Jul 17 PHP
Sublime里直接运行PHP配置方法
Nov 28 PHP
php ImageMagick windows下安装教程
Jan 26 PHP
php去除二维数组的重复项方法
Nov 03 PHP
Thinkphp和onethink实现微信支付插件
Apr 13 PHP
php使用get_class_methods()函数获取分类的方法
Jul 20 PHP
理清PHP在Linxu下执行时的文件权限方法
Jun 07 PHP
PHP后台实现微信小程序登录
Aug 03 PHP
PHP 图片处理
Sep 16 PHP
php实现自动生成验证码的实例讲解
Nov 17 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 读取shell管道传输过来的内容
2010/03/01 PHP
两个php日期控制类实例
2014/12/09 PHP
PHP变量赋值、代入给JavaScript中的变量
2015/06/29 PHP
PHP与Ajax相结合实现登录验证小Demo
2016/03/16 PHP
让任务管理器中的CPU跳舞的js代码
2008/11/01 Javascript
jquery怎样实现ajax联动框(二)
2013/03/08 Javascript
JS添加删除一组文本框并对输入信息加以验证判断其正确性
2013/04/11 Javascript
JS定时器实例详细分析
2013/10/11 Javascript
Nodejs sublime text 3安装与配置
2014/06/19 NodeJs
Javascript基础教程之while语句
2015/01/18 Javascript
javascript实现rgb颜色转换成16进制格式
2015/07/10 Javascript
jQuery EasyUI菜单与按钮详解
2016/07/13 Javascript
微信小程序实现多宫格抽奖活动
2020/04/15 Javascript
分析JavaScript数组操作难点
2017/12/18 Javascript
vue.js使用代理和使用Nginx来解决跨域的问题
2018/02/03 Javascript
[19:15]DK战队纪录片
2014/09/02 DOTA
Django中模型Model添加JSON类型字段的方法
2015/06/17 Python
Python单例模式的两种实现方法
2017/08/14 Python
python进程管理工具supervisor的安装与使用教程
2017/09/05 Python
浅谈python写入大量文件的问题
2018/11/09 Python
python实现淘宝秒杀脚本
2020/06/23 Python
python如何获取当前文件夹下所有文件名详解
2019/01/25 Python
python 实现将list转成字符串,中间用空格隔开
2019/12/25 Python
pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解
2020/01/02 Python
python selenium xpath定位操作
2020/09/01 Python
python+appium+yaml移动端自动化测试框架实现详解
2020/11/24 Python
美国著名的女性内衣零售商:Frederick’s of Hollywood
2018/02/24 全球购物
年度献血先进个人事迹材料
2014/02/14 职场文书
绩效管理实施方案
2014/03/19 职场文书
大学生社团活动总结
2014/04/26 职场文书
2014教师党员自我评议(5篇)
2014/09/20 职场文书
民主生活会对照检查材料范文
2014/10/01 职场文书
2015自愿离婚协议书范本
2015/01/28 职场文书
2016中学教师读书心得体会
2016/01/13 职场文书
python如何进行基准测试
2021/04/26 Python
vue项目如何打包之项目打包优化(让打包的js文件变小)
2022/04/30 Vue.js