教程集 www.jiaochengji.com
教程集 >  脚本编程  >  php  >  正文 PHP正确解析UTF-8字符串

PHP正确解析UTF-8字符串

发布时间:2018-12-24   编辑:jiaochengji.com
教程集为您提供PHP正确解析UTF-8字符串 等资源,欢迎您收藏本站,我们将为您提供最新的PHP正确解析UTF-8字符串 资源
PHP正确解析UTF-8字符串有需要的朋友可参考一下。
<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy('copy1919')">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy1919>

$str = '今天非常Happy,所有决定去KFC吃可乐鸡翅!!!';

/*
$str 是待截取的字符串
$len 是截取的字符数
*/
function utf8sub($str,$len) {
 if($len <= 0){
  return '';
 }
 
 $offset = 0; // 截取高位字节时的偏移量
 $chars = 0;  // 截取到的字符数
 $res = '';   // 存放截取的结果字符串
 
 while($chars < $len){
  // 先取字符串的第一个字节
  // 将它转为十进制
  // 再转为二进制
  $high = ord(substr($str,$offset,1));
  
  // echo '$high='. $high .'<br />';

  if($high == null ){ // 如果取出高位为null,证明已经取到末尾,直接break
   break;
  } 
  if(($high>>2) === 0x3F){ // 将高位右移2位,和二进制111111比较,相同则取6个字节
   // 截取2个字节
   $count = 6;
  }else if(($high>>3) === 0x1F){ // 将高位右移2位,和二进制11111比较,相同则取5个字节
   // 截取3个字节
   $count = 5;
  }else if(($high>>4) === 0xF){ // 将高位右移2位,和二进制1111比较,相同则取4个字节
 
   // 截取4个字节
   $count = 4;
  }else if(($high>>5) === 0x7){ // 将高位右移2位,和二进制111比较,相同则取3个字节
  
   // 截取5个字节
   $count = 3;
  }else if(($high>>6) === 0x3){ // 将高位右移2位,和二进制11比较,相同则取2个字节
   // 截取6个字节
   $count = 2;
  }else if(($high>>7) === 0x0){ // 将高位右移2位,和二进制0比较,相同则取1个字节
   $count = 1;
  }
  // echo '$count='.$count.'<br />';
  
  $res .= substr($str,$offset,$count); // 取出一个字符与$res字符串连接
  $chars = 1;  // 截取到的字符数 1
  $offset = $count;  // 截取高位偏移量向后移$count字节
 }
 return $res;
}

echo utf8sub($str,100);

您可能感兴趣的文章:
Invalid byte 1 of 1-byte UTF-8 sequence解决办法
php正确解析UTF-8字符串的实例代码
php iconv使用要注意的问题
有关匹配中文的正则(GB2312/utf-8)介绍
PHP 正则判断中文UTF-8或GBK编码的实例解析
PHP strlen与mb_strlen区别
谈谈PHP中strlen和mb_strlen的区别
解决php截取utf-8中文字符串时乱码的问题
php截取字符串(无乱码 utf8)
PHP字符串编码问题分析

[关闭]
~ ~