Rumah > php教程 > php手册 > PHP menghuraikan asas kemahiran rentetan UTF-8 application_php dengan betul

PHP menghuraikan asas kemahiran rentetan UTF-8 application_php dengan betul

WBOY
Lepaskan: 2016-05-16 09:00:25
asal
2105 orang telah melayarinya

Dalam "Pembelajaran PHP & MYSQL - Pengekodan Aksara (Bahagian 1)", hubungan penukaran antara Unicode dan UTF-8 diperkenalkan, dan peraturan pengekodan UTF-8 diringkaskan Berdasarkan peraturan pengekodan ini, program penghuraian pengekodan UTF-8 ditulis. , berikut ialah pelaksanaan PHP:

Salin kod Kodnya adalah seperti berikut:

/*
Fungsi program, $str ialah rentetan berkod UTF-8 yang dicampur dengan bahasa Cina dan Inggeris
Nyahkod dan paparkan rentetan ini dengan betul mengikut peraturan pengekodan UTF-8.
*/


$str = 'Hari ini sangat gembira, jadi kami memutuskan untuk pergi ke KFC untuk makan kepak ayam Coke!!!';

/*
$str akan dipintas Rentetan
$len ialah bilangan aksara yang dipintas
*/
fungsi utf8sub($str,$len) {
jika($len <= 0) {
kembali '' ;
}

$offset = 0; // Offset apabila memintas bait tertib tinggi
$chars = 0; res = '' ; // Simpan rentetan hasil yang dipintas

while($chars < $len){
// Ambil bait pertama rentetan dahulu
// Tukarkannya kepada perpuluhan
// Kemudian tukar kepada perduaan
$high = ord(substr($str,$offset,1)); br />';

jika($high == null ){ // Jika bit tinggi adalah batal, ia membuktikan bahawa ia telah diambil hingga tamat, patahkan terus
pecah; >}
if( ($high>>2) === 0x3F){ // Alihkan bit tinggi ke kanan sebanyak 2 bit dan bandingkan dengan binari 111111. Jika sama, ambil 6 bait
// Minta 2 bait
$count = 6;
}else if(($high>>3) === 0x1F){ // Alihkan bit tinggi ke kanan sebanyak 2 bit dan bandingkan ia dengan binari 11111. Jika ia sama, ambil 5 bait
// Pisahkan 3 bait
$kira = 5;
}lain jika(($tinggi>>4) === 0xF) { // Alihkan bit tinggi ke kanan sebanyak 2 bit dan bandingkan dengan binari 1111. Jika ia adalah sama, maka Ambil 4 bait

// Ambil 4 bait
$count = 4; 🎜>}else if(($high>>5) === 0x7){ // Akan Menganjak bit tinggi ke kanan sebanyak 2 bit dan bandingkan dengan binari 111. Jika sama, ambil 3 bait

// Memintas 5 bait
$count = 3;
}else if(($high> >6) === 0x3){ // Alihkan bit tinggi ke kanan sebanyak 2 bit, bandingkan dengan binari 11, jika sama, ambil 2 bait
// Pintasan 6 bait
$kira = 2;
}lain jika(($tinggi>>7) === 0x0){ // Alihkan bit tinggi ke kanan sebanyak 2 bit dan bandingkan dengan binari 0. Jika ia sama, ambil 1 bait
$count = 1; $count.'
';

$res .= substr($str,$offset,$count); $chars += 1; // Bilangan aksara yang dipintas + 1
$offset += $count; // Pintasan offset tinggi dan gerakkannya ke belakang sebanyak $count Bytes
}
kembali $res
}

gema utf8sub($str,100);

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Cadangan popular
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan