首頁 > 後端開發 > php教程 > PHP正确解析UTF-8字符串_PHP教程

PHP正确解析UTF-8字符串_PHP教程

WBOY
發布: 2016-07-13 10:56:14
原創
931 人瀏覽過

PHP正确解析UTF-8字符串有需要的朋友可参考一下。

 代码如下 复制代码

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

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

  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.'
';
  
  $res .= substr($str,$offset,$count); // 取出一个字符与$res字符串连接
  $chars += 1;  // 截取到的字符数+1
  $offset += $count;  // 截取高位偏移量向后移$count字节
 }
 return $res;
}

echo utf8sub($str,100);

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/632169.htmlTechArticlePHP正确解析UTF-8字符串有需要的朋友可参考一下。 代码如下 复制代码 $str = '今天非常Happy,所有决定去KFC吃可乐鸡翅!!!'; /* $str 是待截取的字...
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板