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 相关文章推荐
用libtemplate实现静态网页生成
Oct 09 PHP
新闻分类录入、显示系统
Oct 09 PHP
php 面试碰到过的问题 在此做下记录
Jun 09 PHP
使用PHP计算两个路径的相对路径
Jun 14 PHP
php session_start()出错原因分析及解决方法
Oct 28 PHP
PHP中使用sleep造成mysql读取失败的案例和解决方法
Aug 21 PHP
php通过正则表达式记取数据来读取xml的方法
Mar 09 PHP
Smarty模板变量调节器用法分析
May 23 PHP
php连接oracle数据库的核心步骤
May 26 PHP
php 输出json及显示json中的中文汉字详解及实例
Nov 09 PHP
PHP匿名函数(闭包函数)详解
Mar 22 PHP
php模式设计之观察者模式应用实例分析
Sep 25 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获得网站访问统计信息类Compete API用法实例
2015/04/02 PHP
srcElement表格样式
2006/09/03 Javascript
jquery.validate分组验证代码
2011/03/17 Javascript
自制的文件上传JS控件可支持IE、chrome、firefox etc
2014/04/18 Javascript
JavaScript 数组some()和filter()的用法及区别
2016/05/20 Javascript
全面解析多种Bootstrap图片轮播效果
2016/05/27 Javascript
js格式化时间的简单实例
2016/11/27 Javascript
Vue 中对图片地址进行拼接的方法
2018/09/03 Javascript
Vue文件配置全局变量的实例
2018/09/06 Javascript
Vue Extends 扩展选项用法完整实例
2019/09/17 Javascript
layui 上传文件_批量导入数据UI的方法
2019/09/23 Javascript
JS深入学习之数组对象排序操作示例
2020/05/01 Javascript
vue 单页应用和多页应用的优劣
2020/10/22 Javascript
[03:05]《我与DAC》之xiao8:DAC与BG
2018/03/27 DOTA
Zabbix实现微信报警功能
2016/10/09 Python
利用python实现简单的循环购物车功能示例代码
2017/07/05 Python
Python实战小程序利用matplotlib模块画图代码分享
2017/12/09 Python
python中正则表达式的使用方法
2018/02/25 Python
利用python计算windows全盘文件md5值的脚本
2019/07/27 Python
Python 使用matplotlib模块模拟掷骰子
2019/08/08 Python
Python OrderedDict的使用案例解析
2019/10/25 Python
python实现在一个画布上画多个子图
2020/01/19 Python
jupyter note 实现将数据保存为word
2020/04/14 Python
python判断一个变量是否已经设置的方法
2020/08/13 Python
Python urllib库如何添加headers过程解析
2020/10/05 Python
美国最大的半成品净菜电商:Blue Apron(蓝围裙)
2018/04/27 全球购物
navabi英国:设计师大码女装
2019/06/25 全球购物
办加油卡单位介绍信
2014/01/09 职场文书
团委竞选演讲稿
2014/04/24 职场文书
幽默自我介绍演讲稿
2014/08/21 职场文书
财务助理岗位职责范本
2014/10/09 职场文书
幼儿园园长个人总结
2015/03/02 职场文书
团拜会主持词
2015/07/04 职场文书
医学生自荐信范文(2016精选篇)
2016/01/28 职场文书
小学生一年级(书信作文)
2019/08/13 职场文书
redis缓存存储Session原理机制
2021/11/20 Redis