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 相关文章推荐
全文搜索和替换
Oct 09 PHP
php通过文件头检测文件类型通用代码类(zip,rar等)
Oct 19 PHP
PHP Curl多线程原理实例详解
Nov 06 PHP
PHP中使用Imagick操作PSD文件实例
Jan 26 PHP
php目录拷贝实现方法
Jul 10 PHP
Yii安装与使用Excel扩展的方法
Jul 13 PHP
thinkphp表单上传文件并将文件路径保存到数据库中
Jul 28 PHP
thinkPHP引入类的方法详解
Dec 08 PHP
php中的单引号、双引号和转义字符详解
Feb 16 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
Nov 17 PHP
PHP的RSA加密解密方法以及开发接口使用
Feb 11 PHP
关于Yii中模型场景的一些简单介绍
Sep 22 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
比较discuz和ecshop的截取字符串函数php版
2012/09/03 PHP
关于访问控制的一首PHP面试题(对属性或方法的访问控制)
2012/09/13 PHP
thinkphp四种url访问方式详解
2014/11/28 PHP
非常全面的php日期时间运算汇总
2015/11/04 PHP
PHP如何实现跨域
2016/05/30 PHP
Laravel框架实现的记录SQL日志功能示例
2018/06/19 PHP
javascript 导出数据到Excel(处理table中的元素)
2009/12/18 Javascript
JavaScript 学习技巧
2010/02/17 Javascript
jQuery循环滚动展示代码 可应用到文字和图片上
2012/05/11 Javascript
js二维数组定义和初始化的三种方法总结
2014/03/03 Javascript
红米手机抢购的js代码
2014/03/10 Javascript
jquery实现类似淘宝星星评分功能有截图
2014/09/15 Javascript
JavaScript使用function定义对象并调用的方法
2015/03/23 Javascript
javascript实现下雪效果【实例代码】
2016/05/03 Javascript
jquery easyui dataGrid动态改变排序字段名的方法
2017/03/02 Javascript
js清除浏览器缓存的几种方法
2017/03/15 Javascript
关于Webpack dev server热加载失败的解决方法
2018/02/22 Javascript
微信小程序页面间值传递的两种方法
2018/11/26 Javascript
Vue使用CDN引用项目组件,减少项目体积的步骤
2020/10/30 Javascript
Python中自定义函数的教程
2015/04/27 Python
python3实现TCP协议的简单服务器和客户端案例(分享)
2017/06/14 Python
在Python中增加和插入元素的示例
2018/11/01 Python
实例讲解Python中整数的最大值输出
2019/03/17 Python
Python3中_(下划线)和__(双下划线)的用途和区别
2019/04/26 Python
详解Python二维数组与三维数组切片的方法
2019/07/18 Python
Python爬虫运用正则表达式的方法和优缺点
2019/08/25 Python
Python笔试面试题小结
2019/09/07 Python
IntelliJ 中配置 Anaconda的过程图解
2020/06/01 Python
如何使用Python自动生成报表并以邮件发送
2020/10/15 Python
Lulu Guinness露露·吉尼斯官网:红唇包
2019/02/03 全球购物
营销主管自我评价怎么写
2013/09/19 职场文书
优秀党员主要事迹
2014/01/19 职场文书
艺术设计专业毕业生推荐信
2014/07/08 职场文书
公务员考察材料范文
2014/12/23 职场文书
乌镇导游词
2015/02/02 职场文书
2015年生产部工作总结范文
2015/05/25 职场文书