PHP正確解析UTF-8字串技巧應用_PHP教程

來源:互聯網
上載者:User
在《學習PHP&MYSQL之——字元編碼篇(一)》中介紹了Unicode與UTF-8的轉換關係,總結了一個UTF-8的編碼規則,根據這個編碼規則,寫一個UTF-8編碼的解析程式,以下是PHP的實現:
複製代碼 代碼如下:
/*
程式功能,$str是中英文混合的UTF-8編碼字串,
將此字串根據UTF-8的編碼規則正確的解碼並顯示。
*/


$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 .'
';

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);

http://www.bkjia.com/PHPjc/326131.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/326131.htmlTechArticle在《學習PHPlt;?php /* 程式功能,$str是中英文混合的UTF-8編碼字串, 將此字串根據UTF-8的編碼規則正確的解碼並顯示。 */ $str = '今天非常...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.