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 Smarty date_format [格式化时间日期]
Mar 15 PHP
PHP输入流php://input介绍
Sep 18 PHP
关于PHP结束标签的使用细节探讨及联想
Mar 04 PHP
apache和php之间协同工作的配置经验分享
Apr 08 PHP
解析PHP中VC6 X86和VC9 X86的区别及 Non Thread Safe的意思
Jun 28 PHP
typecho插件编写教程(三):保存配置
May 28 PHP
Yii2针对指定url的生成及图片等的引入方法小结
Jul 18 PHP
PHP生成(支持多模板)二维码海报代码
Apr 30 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
Nov 23 PHP
PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
Dec 04 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
Mar 24 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实现异步操作的研究
2013/02/03 PHP
PHP过滤★等特殊符号的正则
2014/01/27 PHP
PHP中file_get_contents函数抓取https地址出错的解决方法(两种方法)
2015/09/22 PHP
php微信公众号开发之关键词回复
2018/10/20 PHP
laravel框架中间件简单使用方法示例
2020/01/25 PHP
javascript中的window.location.search方法简介
2013/09/02 Javascript
jQuery+css实现的换页标签栏效果
2016/01/27 Javascript
jQuery实现简单的DIV拖动效果
2016/02/19 Javascript
JavaScript Date对象详解
2016/03/01 Javascript
使用 jQuery.ajax 上传带文件的表单遇到的问题
2016/10/31 Javascript
JavaScript基于replace+正则实现ES6的字符串模版功能
2017/04/25 Javascript
AngularJS页面带参跳转及参数解析操作示例
2017/06/28 Javascript
Layui 解决表格异步调用后台分页的问题
2019/10/26 Javascript
python数据类型_元组、字典常用操作方法(介绍)
2017/05/30 Python
详解Django定时任务模块设计与实践
2019/07/24 Python
python__new__内置静态方法使用解析
2020/01/07 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
2020/01/18 Python
python对文件的操作方法汇总
2020/02/28 Python
python实现坦克大战
2020/04/24 Python
利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)
2020/09/04 Python
python中Pexpect的工作流程实例讲解
2021/03/02 Python
HTML5仿手机微信聊天界面
2016/03/18 HTML / CSS
比利时香水网上商店:NOTINO
2018/03/28 全球购物
英国定做窗帘和纺织品面料一站式商店:Dekoria
2018/08/29 全球购物
瑞典香水、须后水和美容产品购物网站:Parfym-Klick.se
2019/12/29 全球购物
党委书记岗位职责
2013/11/24 职场文书
会计专业自荐信
2013/12/02 职场文书
中英文自我评价语句
2013/12/20 职场文书
个人求职信范文分享
2014/01/06 职场文书
银行委托书范本
2014/04/04 职场文书
公司员工手册范本
2015/05/14 职场文书
2015年乡镇卫生院妇幼保健工作总结
2015/05/19 职场文书
新教师2015年度工作总结
2015/07/22 职场文书
公司员工离职感言
2015/08/03 职场文书
《扇形统计图》教学反思
2016/02/17 职场文书
php中pcntl_fork详解
2021/04/01 PHP