首頁 php教程 php手册 PHP正確解析UTF-8字串技巧應用_php基礎

PHP正確解析UTF-8字串技巧應用_php基礎

May 16, 2016 am 09:00 AM
utf-8 字串 解析

在《學習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 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);
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP中int型別轉字串的方法詳解 PHP中int型別轉字串的方法詳解 Mar 26, 2024 am 11:45 AM

PHP中int型別轉字串的方法詳解在PHP開發中,常會遇到將int型別轉換為字串型別的需求。這種轉換可以透過多種方式實現,本文將詳細介紹幾種常用的方法,並附帶具體的程式碼範例來幫助讀者更好地理解。一、使用PHP內建函數strval()PHP提供了一個內建函數strval(),可以將不同類型的變數轉換為字串類型。當我們需要將int型別轉換為字串型別時,

Golang字串是否以指定字元結尾的判斷方法 Golang字串是否以指定字元結尾的判斷方法 Mar 12, 2024 pm 04:48 PM

標題:Golang中判斷字串是否以指定字元結尾的方法在Go語言中,有時候我們需要判斷一個字串是否以特定的字元結尾,這在處理字串時十分常見。本文將介紹如何使用Go語言來實現這項功能,同時提供程式碼範例供大家參考。首先,讓我們來看看Golang中如何判斷一個字串是否以指定字元結尾的方法。 Golang中的字串可以透過索引來取得其中的字符,而字串的長度可

Golang中如何檢查字串是否以特定字元開頭? Golang中如何檢查字串是否以特定字元開頭? Mar 12, 2024 pm 09:42 PM

Golang中如何檢查字串是否以特定字元開頭?在使用Golang程式設計時,經常會遇到需要檢查一個字串是否以特定字元開頭的情況。針對這項需求,我們可以使用Golang中的strings套件所提供的函數來實現。接下來將詳細介紹如何使用Golang檢查字串是否以特定字元開頭,並附上具體的程式碼範例。在Golang中,我們可以使用strings套件中的HasPrefix

怎麼重複字串_python重複字串教程 怎麼重複字串_python重複字串教程 Apr 02, 2024 pm 03:58 PM

1.先開啟pycharm,進入到pycharm首頁。 2.然後新建python腳本,右鍵--點選new--點選pythonfile。 3.輸入一段字串,代碼:s="-"。 4.接著需要把字串裡面的符號重複20次,代碼:s1=s*20。5、輸入列印輸出代碼,代碼:print(s1)。 6.最後運行腳本,在最底部會看到我們的回傳值:-就重複了20次。

PHP 中點的意思和用法解析 PHP 中點的意思和用法解析 Mar 27, 2024 pm 08:57 PM

【PHP中點的意義和用法解析】在PHP中,中點(.)是常用的運算符,用來連接兩個字串或物件的屬性或方法。在本文中,我們將深入探討PHP中點的意義和用法,並透過具體的程式碼範例加以說明。 1.連接字串中點運算子.在PHP中最常見的用法是連接兩個字串。透過將.放置在兩個字串之間,可以將它們拼接在一起,形成一個新的字串。 $string1=&qu

Win11新功能解析:跳過登入微軟帳號的方法 Win11新功能解析:跳過登入微軟帳號的方法 Mar 27, 2024 pm 05:24 PM

Win11新功能解析:跳過登入微軟帳號的方法隨著Windows11的發布,許多用戶發現其帶來了更多的便利性和新功能。然而,有些用戶可能不喜歡將其係統與微軟帳戶綁定,希望跳過這一步驟。本文將介紹一些方法,幫助使用者在Windows11中跳過登入微軟帳戶,並實現更私密、更自主的使用體驗。首先,讓我們來了解為什麼有些用戶不願意登入微軟帳號。一方面,一些用戶擔心他們

PHP字串操作:有效去除空格的實用方法 PHP字串操作:有效去除空格的實用方法 Mar 24, 2024 am 11:45 AM

PHP字串操作:有效去除空格的實用方法在PHP開發中,經常會遇到需要對字串進行去除空格操作的情況。去除空格可以讓字串更加整潔,方便後續的資料處理和顯示。本文將介紹幾種有效的去除空格的實用方法,並附上具體的程式碼範例。方法一:使用PHP內建函數trim()PHP內建函數trim()可以移除字串兩端的空格(包括空格、製表符、換行符等),非常方便且簡單易用

PHP實作刪除字串最後兩個字元的技巧 PHP實作刪除字串最後兩個字元的技巧 Mar 23, 2024 pm 12:18 PM

PHP作為一種廣泛應用於開發網頁應用程式的腳本語言,其字串處理功能十分強大。在日常開發中,經常會遇到需要刪除字串的操作,特別是刪除字串的最後兩個字元。本文將介紹兩種PHP實作刪除字串最後兩個字元的技巧,並提供具體的程式碼範例。技巧一:使用substr函數PHP中的substr函數用來傳回字串的一部分。透過指定字串和起始位置,我們可以輕鬆地刪除字符

See all articles