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 相关文章推荐
DedeCms模板安装/制作概述
Mar 11 PHP
PHP define函数的使用说明
Aug 27 PHP
Apache 配置详解(最好的APACHE配置教程)
Jul 04 PHP
php URL验证正则表达式
Jul 19 PHP
解析zend studio中直接导入svn中的项目的方法步骤
Jun 21 PHP
PHP垃圾回收机制引用计数器概念分析
Jun 24 PHP
PHP把空格、换行符、中文逗号等替换成英文逗号的正则表达式
May 04 PHP
实现在同一方法中获取当前方法中新赋值的session值解决方法
Jun 26 PHP
php curl上传、下载、https登陆实现代码
Jul 23 PHP
PHP结合Vue实现滚动底部加载效果
Dec 17 PHP
php从数据库读取数据,并以json格式返回数据的方法
Aug 21 PHP
php使用yield对性能提升的测试实例分析
Sep 19 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
我的论坛源代码(二)
2006/10/09 PHP
比较好用的PHP防注入漏洞过滤函数代码
2012/04/11 PHP
如何解决phpmyadmin导入数据库文件最大限制2048KB
2015/10/09 PHP
php使用PDO下exec()函数查询执行后受影响行数的方法
2017/03/28 PHP
[原创]IE view-source 无法查看看源码 JavaScript看网页源码
2009/07/19 Javascript
jquery 弹出层注册页面等(asp.net后台)
2010/06/17 Javascript
script标签的 charset 属性使用说明
2010/12/04 Javascript
基于JQuery的日期联动实现代码
2011/02/24 Javascript
js修改table中Td的值(定义td的单击事件)
2013/01/10 Javascript
js实现特定位取反原理及示例
2014/06/30 Javascript
常常会用到的截取字符串substr()、substring()、slice()方法详解
2015/12/16 Javascript
深入探究JavaScript中for循环的效率问题及相关优化
2016/03/13 Javascript
js 连续赋值的简单实现
2016/06/13 Javascript
JavaScript实现时间倒计时跳转(推荐)
2016/06/28 Javascript
EasyUI创建对话框的两种方式
2016/08/23 Javascript
javascript如何创建对象
2016/08/29 Javascript
浅谈JS中的三种字符串连接方式及其性能比较
2016/09/02 Javascript
bootstrap监听滚动实现头部跟随滚动
2016/11/08 Javascript
使用vue构建一个上传图片表单
2017/07/04 Javascript
Javascript Web Worker使用过程解析
2020/03/16 Javascript
详解JS预解析原理
2020/06/16 Javascript
vue中实现点击变成全屏的多种方法
2020/09/27 Javascript
Python调用微信公众平台接口操作示例
2017/07/08 Python
Python反爬虫技术之防止IP地址被封杀的讲解
2019/01/09 Python
Python编程快速上手——Excel表格创建乘法表案例分析
2020/02/28 Python
python爬虫开发之Beautiful Soup模块从安装到详细使用方法与实例
2020/03/09 Python
Python利用Faiss库实现ANN近邻搜索的方法详解
2020/08/03 Python
Pycharm如何自动生成头文件注释
2020/11/14 Python
阿里巴巴国际站:Alibaba.com
2016/07/21 全球购物
澳洲CFL商城:CHEMIST FOR LESS(中文)
2021/02/28 全球购物
中学生运动会口号
2014/06/07 职场文书
pandas中DataFrame重置索引的几种方法
2021/05/24 Python
python操作xlsx格式文件并读取
2021/06/02 Python
Python深度学习之实现卷积神经网络
2021/06/05 Python
Python机器学习之决策树和随机森林
2021/07/15 Javascript
漫画「请问您今天要来点兔子吗?」最新杂志彩页公开
2022/03/24 日漫