Heim > php教程 > php手册 > PHP analysiert UTF-8-String-Kenntnisse korrekt. application_php-Grundlagen

PHP analysiert UTF-8-String-Kenntnisse korrekt. application_php-Grundlagen

WBOY
Freigeben: 2016-05-16 09:00:25
Original
2069 Leute haben es durchsucht

In „PHP und MYSQL lernen – Zeichenkodierung (Teil 1)“ wird die Konvertierungsbeziehung zwischen Unicode und UTF-8 vorgestellt und eine UTF-8-Kodierungsregel zusammengefasst. Basierend auf dieser Kodierungsregel wird ein UTF-8-Kodierungsanalyseprogramm erstellt ist geschrieben. Das Folgende ist die Implementierung von PHP:

Code kopieren Der Code lautet wie folgt:

/*
Programmfunktion, $str ist eine UTF-8-codierte Zeichenfolge, gemischt mit Chinesisch und Englisch.
Diese Zeichenfolge wird gemäß den UTF-8-Codierungsregeln korrekt dekodiert und angezeigt.
*/


$str = 'Heute bin ich sehr glücklich, also haben wir beschlossen, zu KFC zu gehen, um Cola Chicken Wings zu essen!!!'; >$str soll abgefangen werden Die Zeichenfolge
$len ist die Anzahl der abgefangenen Zeichen
*/
function utf8sub($str,$len) {
if($len <= 0) {
return '' ;
}

$offset = 0; // Offset beim Abfangen höherwertiger Bytes
$chars = 0; // Anzahl der abgefangenen Zeichen
$ res = '' ; // Speichern Sie die abgefangene Ergebniszeichenfolge

while($chars < $len){
// Nehmen Sie zuerst das erste Byte der Zeichenfolge
// Wandeln Sie es in eine Dezimalzahl um
// Dann in Binär konvertieren
$high = ord(substr($str,$offset,1)); br />';

if($high == null ){ // Wenn das High-Bit null ist, beweist es, dass es bis zum Ende abgerufen wurde, direkt unterbrechen
break; >}
if( ($high>>2) === 0x3F){ // Verschiebe das High-Bit um 2 Bits nach rechts und vergleiche es mit der Binärzahl 111111. Wenn es dasselbe ist, nimm 6 Bytes
// 2 Bytes abfangen
$count = 6;
}else if(($high>>3) === 0x1F){ // Das High-Bit um 2 Bits nach rechts verschieben und vergleichen es mit binär 11111. Wenn es dasselbe ist, nimm 5 Bytes
// Intercept 3 Bytes
$count = 5
}else if(($high>>4) === 0xF) { // Verschiebe das High-Bit um 2 Bits nach rechts und vergleiche es mit binär 1111. Wenn sie gleich sind, dann nimm 4 Bytes

// Nimm 4 Bytes
$count = 4
}else if(($high>>5) === 0x7){ // Verschiebt das High-Bit um 2 Bits nach rechts und vergleicht es mit der Binärzahl 111. Wenn es dasselbe ist, nimm 3 Bytes

// 5 Bytes abfangen
$count = 3;
}else if(($high> >6) === 0x3){ // High-Bit um 2 Bit nach rechts verschieben, vergleichen mit binär 11, wenn gleich, 2 Bytes nehmen
// 6 Bytes abfangen
$count = 2;>7) === 0x0){ // Verschieben Sie das High-Bit um 2 Bits nach rechts und vergleichen Sie es mit binär 0. Wenn sie gleich sind, nehmen Sie 1 Byte
$count = 1; }
// echo '$count='. $count.'
';

$res .= substr($str,$offset,$count); / / Nimm ein Zeichen heraus und verbinde es mit $res string
$chars += 1; // Anzahl der abgefangenen Zeichen + 1
$offset += $count; // Den hohen Offset abfangen und um $count Bytes verschieben
return $res
}

echo utf8sub($str,100);

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage