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分页显示制作详细讲解
Oct 09 PHP
php面向对象全攻略 (十二) 抽象方法和抽象类
Sep 30 PHP
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
Dec 01 PHP
ThinkPHP基本的增删查改操作实例教程
Aug 22 PHP
PHP文件缓存类示例分享
Jan 30 PHP
php中ob_flush函数和flush函数用法分析
Mar 18 PHP
详解PHP实现异步调用的4种方法
Mar 14 PHP
Yii实现简单分页的方法
Apr 29 PHP
php获取数据库结果集方法(推荐)
Jun 01 PHP
PHP实现的函数重载功能示例
Aug 03 PHP
php正则表达式使用方法整理集合
Jan 31 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
Feb 21 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
2020年4月新番动漫目录 官方宣布4月播出的作品一览
2020/03/08 日漫
PHP 读取文件内容代码(txt,js等)
2009/12/06 PHP
ajax 的post方法实例(带循环)
2011/07/04 PHP
php按百分比生成缩略图的代码分享
2014/05/10 PHP
PHP函数extension_loaded()用法实例
2015/01/19 PHP
JavaScript入门教程(6) Window窗口对象
2009/01/31 Javascript
风吟的小型JavaScirpt库 (FY.JS).
2010/03/09 Javascript
jquery 插件学习(五)
2012/08/06 Javascript
JavaScript(js)设置默认输入焦点(focus)
2012/12/28 Javascript
JavaScript中的迭代器和生成器详解
2014/10/29 Javascript
node.js中的require使用详解
2014/12/15 Javascript
非常酷炫的Bootstrap图片轮播动画
2016/05/27 Javascript
js仿新浪微博消息发布功能
2017/02/17 Javascript
详解Vue2.0之去掉组件click事件的native修饰
2017/04/20 Javascript
JS实现键值对遍历json数组功能示例
2018/05/30 Javascript
Vuex的基本概念、项目搭建以及入坑点
2018/11/04 Javascript
JavaScript常见鼠标事件与用法分析
2019/01/03 Javascript
vue中组件的3种使用方式详解
2019/03/23 Javascript
对vuex中getters计算过滤操作详解
2019/11/06 Javascript
Vue项目打包压缩的实现(让页面更快响应)
2020/03/10 Javascript
Python3安装Pymongo详细步骤
2017/05/26 Python
python实现windows下文件备份脚本
2018/05/27 Python
使用python对文件中的数值进行累加的实例
2018/11/28 Python
python字典改变value值方法总结
2019/06/21 Python
如何使用Python 打印各种三角形
2019/06/28 Python
PyQt5中QTableWidget如何弹出菜单的示例代码
2020/02/23 Python
Python下划线5种含义代码实例解析
2020/07/10 Python
西式结婚主持词
2014/03/14 职场文书
2014年管理工作总结
2014/11/22 职场文书
入党积极分子个人总结
2015/03/02 职场文书
食品安全责任书范本
2015/05/09 职场文书
六年级作文之预言作文
2019/10/25 职场文书
导游词之镇江西津古渡
2019/11/06 职场文书
《语言的突破》读后感3篇
2019/12/12 职场文书
python lambda 表达式形式分析
2022/04/03 Python
Win11无法访问设备和打印机 如何解决页面空白
2022/04/09 数码科技