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.
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!