Heim  >  Artikel  >  Backend-Entwicklung  >  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?

藏色散人
藏色散人Original
2021-09-20 10:47:363385Durchsuche

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

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
?>

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";
?>

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!

Stellungnahme:
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