Heim >Backend-Entwicklung >PHP-Problem >PHP implementiert das Abfangen chinesischer Zeichenfolgen ohne verstümmelte Zeichen
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: (Empfohlenes Lernen: PHP-Programmierung vom Einstieg bis zur Kompetenz)
<?php $mystring="今天天气真好"; $mysubstring=substr($mystring,0,2); echo $mysubstring; ?>
Das Ausgabeergebnis ist �;
Ursachenanalyse: substr-Funktion Der Prototyp ist: string substr ( string $string , int $start [, int $length ] ), wobei $length die zurückgegebene Bytelänge angibt und ein chinesisches Zeichen zwei Bytes belegt. Bei einem chinesischen 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 zusätzliche 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"; ?>
Das Ausgabeergebnis ist: Die Länge ist: 6, der Substr ist: Das heutige Wetter
Die Der Prototyp der mb_strlen-Funktion ist int mb_strlen(string string_input, string encode); encode ist standardmäßig UTF-8, wodurch für UTF-8 codierte chinesische Zeichen als eins gezählt werden
Hinweis: mb_strlen und mb_substr sind keine Kernfunktionen von PHP. Sie müssen extension=php_mbstring.dll in php.ini öffnen, bevor Sie sie verwenden
Das obige ist der detaillierte Inhalt vonPHP implementiert das Abfangen chinesischer Zeichenfolgen ohne verstümmelte Zeichen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!