Heim > Backend-Entwicklung > PHP-Problem > Was soll ich tun, wenn die PHP-Substr-Funktion verstümmelte chinesische Zeichen abfängt?

Was soll ich tun, wenn die PHP-Substr-Funktion verstümmelte chinesische Zeichen abfängt?

藏色散人
Freigeben: 2023-03-12 19:22:01
Original
3421 Leute haben es durchsucht

Der Grund, warum die PHP-Substr-Funktion chinesische Zeichen mit verstümmelten Zeichen abfängt, liegt darin, dass die Substr-Funktion ein UTF-8-chinesisches Zeichen als 3 Bytes behandelt. Die Möglichkeit, die verstümmelten Zeichen zu lösen, besteht darin, stattdessen die Funktionen mb_strlen und mb_substr zu verwenden.

Was soll ich tun, wenn die PHP-Substr-Funktion verstümmelte chinesische Zeichen abfängt?

Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP7.1, Dell G3-Computer.

Was soll ich tun, wenn die PHP-Substr-Funktion verstümmelte chinesische Zeichen abfängt?

Lösung zum Abfangen verstümmelter chinesischer Zeichen mit Substr in PHP

Substr wird häufig zum Abfangen von Zeichenfolgen in PHP verwendet. Wenn wir es jedoch zum Abfangen chinesischer Zeichen verwenden, treten verstümmelte Zeichen auf, zum Beispiel:

<?php
$mystring="今天天气真好";
$mysubstring=substr($mystring,0,2);
echo $mysubstring;
?>
Nach dem Login kopieren

Die Ausgabe Das Ergebnis ist �;

Ursachenanalyse: Der Prototyp der Substr-Funktion ist: String Substr (String $string, int $start [, int $length]), wobei $length die zurückgegebene Bytelänge darstellt und ein chinesisches Zeichen Zwei einnimmt Bytes, für ein chinesisches UTF-8-Zeichen wird es als 3 Bytes behandelt.

<?php
$length=strlen($mystring);echo $length;//输出结果为18
?>
Nach dem Login kopieren

Das heißt, wir können $length auf 3 setzen, wodurch das Wort „Jin“ erfolgreich zurückgegeben wird. Wenn in diesem Fall Chinesisch und Englisch gemischt werden, müssen wir die $-Länge sorgfältig berechnen.

Gibt es also eine bessere Lösung? PHP bietet die zusätzlichen Funktionen mb_strlen und mb_substr

<?php
$length=mb_strlen($mystring);
$mysub=mb_substr($mystring,0,4);
echo "the length is:$length,","the substr is:$mysub";
?>
Nach dem Login kopieren

Die Ausgabeergebnisse sind: die Länge ist: 6, der Substr ist: das heutige Wetter
Der Prototyp der mb_strlen-Funktion ist int mb_strlen(string string_input, string encode); 8, es zählt in UTF-8 codierte chinesische Zeichen als eins

Hinweis: mb_strlen und mb_substr sind keine Kernfunktionen von PHP. Sie müssen die Erweiterung=php_mbstring.dll vor der Verwendung in php.ini öffnen

Empfohlene Studie: „PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas soll ich tun, wenn die PHP-Substr-Funktion verstümmelte chinesische Zeichen abfängt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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 Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage