php按字符无乱码截取中文的方法

 更新时间:2015年03月27日 09:33:48   作者:dingding  
这篇文章主要介绍了php按字符无乱码截取中文的方法,涉及php操作中英文字符串的技巧,非常具有实用价值,需要的朋友可以参考下

本文实例讲述了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与MySQL开发中页面乱码的产生与解决

    PHP与MySQL开发中页面乱码的产生与解决

    一般来说,乱码的出现有2种原因,首先是由于编码(charset)设置错误,导致浏览器以错误的编码来解析,从而出现了满屏乱七八糟的“天书”,其次是文件被以错误的编码打开,然后保存,比如一个文本文件原先是GB2312编码的,却以UTF-8编码打开再保存。要解决上述乱码问题,首先需要知道开发中哪些环节涉及到了编码:
    2008-03-03
  • PHP动态柱状图实现方法

    PHP动态柱状图实现方法

    这篇文章主要介绍了PHP动态柱状图实现方法,实例分析了php结合HTML元素实现动态柱状图的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-03-03
  • PHP数据库调用类调用实例(详细注释)

    PHP数据库调用类调用实例(详细注释)

    PHP开发中我们经常需要用一些数据库类,这里简单的分享下调用类的代码,学习php数据库操作的朋友可以参考下
    2012-07-07
  • 详解WordPress中用于合成数组的wp_parse_args()函数

    详解WordPress中用于合成数组的wp_parse_args()函数

    这篇文章主要介绍了WordPress中用于合成数组的wp_parse_args()函数,转换成数组通常是为了方便查询,需要的朋友可以参考下
    2015-12-12
  • 静态html文件执行php语句的方法(推荐)

    静态html文件执行php语句的方法(推荐)

    下面小编就为大家带来一篇静态html文件执行php语句的方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • php数据入库前清理 注意php intval与mysql的int取值范围不同

    php数据入库前清理 注意php intval与mysql的int取值范围不同

    php数据入库前清理 注意php intval与mysql的int取值范围不同,需要的朋友可以参考下。
    2010-12-12
  • php数组排序usort、uksort与sort函数用法

    php数组排序usort、uksort与sort函数用法

    这篇文章主要介绍了php数组排序usort、uksort与sort函数用法,详细介绍了usort、uksort与sort函数在数组排序中的应用,具有不错的参考借鉴价值,需要的朋友可以参考下
    2014-11-11
  • 用mysql内存表来代替php session的类

    用mysql内存表来代替php session的类

    mysql内存表实现替换php session类,效果什么大家可以自己测试下。
    2009-02-02
  • PHP抽象类 介绍

    PHP抽象类 介绍

    对于PHP程序员来说,最为难掌握的一点要数PHP抽象类应用这一块知识点。作为一个新手其实也还没有到要用面向对象的知识去编程,但以后进行开发,使用类进行封装或者使用接口之类,把程序进行各种模块式的开发,这当然是必然的
    2012-06-06
  • PHP实现将科学计数法转换为原始数字字符串的方法

    PHP实现将科学计数法转换为原始数字字符串的方法

    这篇文章主要介绍了PHP实现将科学计数法转换为原始数字字符串的方法,通过一个简单的自定义函数使用正则替换实现该功能,是非常实用的技巧,需要的朋友可以参考下
    2014-12-12

最新评论