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 相关文章推荐
3.从实例开始
Oct 09 PHP
PHP里的中文变量说明
Jul 23 PHP
具有时效性的php加密解密函数代码
Jun 19 PHP
phpphp图片采集后按原路径保存图片示例
Feb 18 PHP
PHP APC缓存配置、使用详解
Mar 06 PHP
php生成随机颜色方法汇总
Dec 03 PHP
php实现删除空目录的方法
Mar 16 PHP
PHP执行shell脚本运行程序不产生core文件的方法
Dec 28 PHP
PHP实现留言板功能的详细代码
Mar 25 PHP
PHP实现类似于C语言的文件读取及解析功能
Sep 01 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
Sep 22 PHP
PHP PDOStatement::fetchObject讲解
Feb 01 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数组操作汇总 php数组的使用技巧
2011/07/17 PHP
php快递单号查询接口使用示例
2014/05/05 PHP
ThinkPHP的I方法使用详解
2014/06/18 PHP
一个不易被发现的PHP后门代码解析
2014/07/05 PHP
php把大写命名转换成下划线分割命名
2015/04/27 PHP
微信公众平台开发教程⑥ 微信开发集成类的使用图文详解
2019/04/10 PHP
用php定义一个数组最简单的方法
2019/10/04 PHP
读jQuery之二(两种扩展)
2011/06/11 Javascript
JS网页播放声音实现代码兼容各种浏览器
2013/09/22 Javascript
jQuery消息提示框插件Tipso
2015/05/04 Javascript
移动端点击态处理的三种实现方式
2017/01/12 Javascript
javascript 中的try catch应用总结
2017/04/01 Javascript
jQuery实现返回顶部按钮和scroll滚动功能[带动画效果]
2017/07/05 jQuery
JS 中使用Promise 实现红绿灯实例代码(demo)
2017/10/20 Javascript
Vue组件开发之LeanCloud带图形校验码的短信发送功能
2017/11/07 Javascript
layui点击按钮添加可编辑的一行方法
2018/08/15 Javascript
Postman的下载及安装教程详解
2018/10/16 Javascript
简化版的vue-router实现思路详解
2018/10/19 Javascript
Vue表单控件数据绑定方法详解
2020/02/05 Javascript
React实现评论的添加和删除
2020/10/20 Javascript
webpack4从0搭建组件库的实现
2020/11/29 Javascript
浅谈Python类的__getitem__和__setitem__特殊方法
2016/12/25 Python
Python 实现链表实例代码
2017/04/07 Python
Python机器学习logistic回归代码解析
2018/01/17 Python
ubuntu16.04制作vim和python3的开发环境
2018/09/23 Python
Tensorflow中k.gradients()和tf.stop_gradient()用法说明
2020/06/10 Python
Python中的面向接口编程示例详解
2021/01/17 Python
HTML5+CSS3实现无插件拖拽上传图片(支持预览与批量)
2017/01/05 HTML / CSS
html+css实现自定义图片上传按钮功能
2019/09/04 HTML / CSS
武汉世纪畅想数字传播有限公司.NET笔试题
2014/07/22 面试题
好家长事迹材料
2014/01/23 职场文书
现场施工员岗位职责
2014/03/10 职场文书
消防安全承诺书
2014/05/22 职场文书
岗位聘任报告
2015/03/02 职场文书
用基于python的appium爬取b站直播消费记录
2021/04/17 Python
python中 .npy文件的读写操作实例
2022/04/14 Python