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实现的数字验证码及数字运算验证码
Jul 30 PHP
Thinkphp实现自动验证和自动完成
Dec 19 PHP
PHP引用的调用方法分析
Apr 25 PHP
php微信开发接入
Aug 27 PHP
php rsa 加密,解密,签名,验签详解
Dec 06 PHP
PHP如何读取由JavaScript设置的Cookie
Mar 22 PHP
php+resumablejs实现的分块上传 断点续传功能示例
Apr 18 PHP
PHP生成随机数的方法总结
Mar 01 PHP
laravel-admin的图片删除实例
Sep 30 PHP
tp5 sum某个字段相加得到总数的例子
Oct 18 PHP
浅谈laravel-admin form中的数据,在提交后,保存前,获取并进行编辑
Oct 21 PHP
PHP基于ip2long实现IP转换整形
Dec 11 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 Zip解压 文件在线解压缩的函数代码
2010/05/26 PHP
PHP图片裁剪函数(保持图像不变形)
2014/05/04 PHP
PHP中strpos、strstr和stripos、stristr函数分析
2016/06/11 PHP
基于ThinkPHP5.0实现图片上传插件
2017/09/25 PHP
php封装单文件上传到数据库(路径)
2017/10/15 PHP
PHP设计模式之建造者模式定义与用法简单示例
2018/08/13 PHP
YUI Compressor压缩JavaScript原理及微优化
2013/01/07 Javascript
关于jquery.validate1.9.0前台验证的使用介绍
2013/04/26 Javascript
javascript不可用的问题探究
2013/10/01 Javascript
Jjcarousellite 实现图片列表滚动的简单实例
2013/11/29 Javascript
javascript动态修改Li节点值的方法
2015/01/20 Javascript
JavaScript数据库TaffyDB用法实例分析
2015/07/27 Javascript
JavaScript实现数据类型的相互转换
2016/03/06 Javascript
基于Vuejs框架实现翻页组件
2020/06/29 Javascript
jQuery实现上传图片前预览效果功能
2017/08/03 jQuery
JavaScript实现为事件句柄绑定监听函数的方法分析
2017/11/14 Javascript
vue项目配置同一局域网可使用ip访问的操作
2020/10/23 Javascript
Nodejs + sequelize 实现增删改查操作
2020/11/07 NodeJs
python使用正则搜索字符串或文件中的浮点数代码实例
2014/07/11 Python
Python实现数据库编程方法详解
2015/06/09 Python
Python3实现Web网页图片下载
2016/01/28 Python
Django Admin实现三级联动的示例代码(省市区)
2018/06/22 Python
pandas删除指定行详解
2019/04/04 Python
浅谈keras的深度模型训练过程及结果记录方式
2020/01/24 Python
python中添加模块导入路径的方法
2021/02/03 Python
CSS3中引入多种自定义字体font-face
2020/06/12 HTML / CSS
Levi’s西班牙官方网站:李维斯,著名的牛仔裤品牌
2020/08/20 全球购物
巴西最大的玩具连锁店:Ri Happy
2020/06/17 全球购物
经销商订货会主持词
2014/03/27 职场文书
机电一体化应届生求职信
2014/08/09 职场文书
2014入党积极分子批评与自我批评思想汇报
2014/09/20 职场文书
入股合作协议书
2014/10/12 职场文书
2014年绩效考核工作总结
2014/12/11 职场文书
会议通知范文
2015/04/15 职场文书
忠诚与背叛观后感
2015/06/04 职场文书
2019年入党思想汇报格式与要求
2019/06/25 职场文书