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 版本]
Mar 20 PHP
基于asp+ajax和数据库驱动的二级联动菜单
May 06 PHP
php使用sql数据库 获取字段问题介绍
Aug 12 PHP
PHP中几个可以提高运行效率的代码写法、技巧分享
Aug 21 PHP
PHP 使用memcached简单示例分享
Mar 05 PHP
php cli配置文件问题分析
Oct 15 PHP
简单的php+mysql聊天室实现方法(附源码)
Jan 05 PHP
mysql_escape_string()函数用法分析
Apr 25 PHP
Yii2中hasOne、hasMany及多对多关联查询的用法详解
Feb 15 PHP
Laravel框架基于ajax实现二级联动功能示例
Jan 17 PHP
PHP iconv()函数字符编码转换的问题讲解
Mar 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
PHP图片裁剪函数(保持图像不变形)
2014/05/04 PHP
destoon实现公司新闻详细页添加评论功能的方法
2014/07/15 PHP
PHP实现将浏览历史页面网址保存到cookie的方法
2015/01/26 PHP
PHP实现递归无限级分类
2015/10/22 PHP
PHP lcfirst()函数定义与用法
2019/03/08 PHP
js+css在交互上的应用
2010/07/18 Javascript
PHP 与 js的通信(via ajax,json)
2010/11/16 Javascript
酷! 不同风格页面布局幻灯片特效js实现
2021/02/19 Javascript
BootStrap 可编辑表Table格
2016/11/24 Javascript
JQuery判断正整数整理小结
2017/08/21 jQuery
js拖动滑块和点击水波纹效果实例代码
2018/10/16 Javascript
微信小程序调用天气接口并且渲染在页面过程详解
2019/06/24 Javascript
JS实现音乐钢琴特效
2020/01/06 Javascript
解决父组件将子组件作为弹窗调用只执行一次created的问题
2020/07/24 Javascript
在项目vue中使用echarts的操作步骤
2020/09/07 Javascript
vue项目中播放rtmp视频文件流的方法
2020/09/17 Javascript
Javascript文本框脚本实现方法解析
2020/10/30 Javascript
Echarts.js无法引入问题解决方案
2020/10/30 Javascript
Python读取图片属性信息的实现方法
2016/09/11 Python
用Python将mysql数据导出成json的方法
2018/08/21 Python
如何在Django中添加没有微秒的 DateTimeField 属性详解
2019/01/30 Python
python绘制评估优化算法性能的测试函数
2019/06/25 Python
对Python _取log的几种方式小结
2019/07/25 Python
python创建与遍历List二维列表的方法
2019/08/16 Python
德国奢侈品网上商城:Mytheresa
2016/08/24 全球购物
Airbnb爱彼迎官网:成为爱彼迎房东,赚取收入
2019/03/14 全球购物
瀑布模型都有哪些优缺点
2014/06/23 面试题
大学四年职业生涯规划书范文
2014/01/02 职场文书
自我鉴定注意事项
2014/01/19 职场文书
社会治安综合治理管理责任书
2014/04/16 职场文书
行政撤诉申请书
2015/05/18 职场文书
班级联欢会主持词
2015/07/03 职场文书
Oracle 数据仓库ETL技术之多表插入语句的示例详解
2021/04/12 Oracle
Python爬虫之自动爬取某车之家各车销售数据
2021/06/02 Python
搞笑Gif:这么白这么长的腿像极了一楼的女朋友
2022/03/21 杂记
Python selenium绕过webdriver监测执行javascript
2022/04/12 Python