国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP正確解析UTF-8字符串

2024-09-04 11:47:53
字體:
來源:轉載
供稿:網友
  1. $str = '今天非常Happy,所有決定去KFC吃可樂雞翅!!!'
  2. /* 
  3. $str 是待截取的字符串 
  4. $len 是截取的字符數 
  5. */ 
  6. function utf8sub($str,$len) { 
  7.  if($len <= 0){ 
  8.   return ''
  9.  } 
  10.   
  11.  $offset = 0; // 截取高位字節時的偏移量 
  12.  $chars = 0;  // 截取到的字符數 
  13.  $res = '';   // 存放截取的結果字符串 
  14.   
  15.  while($chars < $len){ 
  16.   // 先取字符串的第一個字節 
  17.   // 將它轉為十進制 
  18.   // 再轉為二進制 
  19.   $high = ord(substr($str,$offset,1)); 
  20.    
  21.   // echo '$high='. $high .'<br />'; 
  22.   if($high == null ){ // 如果取出高位為null,證明已經取到末尾,直接break 
  23.    break
  24.   }   
  25.   if(($high>>2) === 0x3F){ // 將高位右移2位,和二進制111111比較,相同則取6個字節 
  26.    // 截取2個字節 
  27.    $count = 6; 
  28.   }else if(($high>>3) === 0x1F){ // 將高位右移2位,和二進制11111比較,相同則取5個字節 
  29.    // 截取3個字節 
  30.    $count = 5; 
  31.   }else if(($high>>4) === 0xF){ // 將高位右移2位,和二進制1111比較,相同則取4個字節 
  32.   
  33.    // 截取4個字節 
  34.    $count = 4; 
  35.   }else if(($high>>5) === 0x7){ // 將高位右移2位,和二進制111比較,相同則取3個字節 
  36.    
  37.    // 截取5個字節 
  38.    $count = 3; 
  39.   }else if(($high>>6) === 0x3){ // 將高位右移2位,和二進制11比較,相同則取2個字節 
  40.    // 截取6個字節 
  41.    $count = 2; 
  42.   }else if(($high>>7) === 0x0){ // 將高位右移2位,和二進制0比較,相同則取1個字節 
  43.    $count = 1; 
  44.   } 
  45.   // echo '$count='.$count.'<br />'; 
  46.    
  47.   $res .= substr($str,$offset,$count); // 取出一個字符與$res字符串連接 
  48.   $chars += 1;  // 截取到的字符數+1 
  49.   $offset += $count;  // 截取高位偏移量向后移$count字節  
  50.  } 
  51.  return $res
  52. echo utf8sub($str,100); 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 六盘水市| 苏尼特左旗| 加查县| 乃东县| 临颍县| 宁阳县| 滨州市| 通州市| 鄂温| 永城市| 云南省| 沙湾县| 滕州市| 华坪县| 万源市| 和龙市| 澄江县| 兖州市| 清涧县| 乐业县| 大城县| 利津县| 项城市| 宜章县| 伊宁县| 和政县| 莒南县| 南通市| 黔南| 巴楚县| 谢通门县| 恭城| 北川| 崇明县| 隆尧县| 青神县| 新闻| 石楼县| 建始县| 西乌珠穆沁旗| 正定县|