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; ?>
Das Ausgabeergebnis ist �; (Empfohlenes Lernen: PHP-Programmierung vom Einstieg bis zur Kompetenz)
Ursachenanalyse: Der Prototyp der Substr-Funktion lautet: string substr ( string $string , int $ start [, int $length ] ), wobei $length die zurückgegebene Bytelänge darstellt 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, was das Wort „Jin“ erfolgreich zurückgibt. 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"; ?>
Das Ausgabeergebnis ist: Die Länge ist: 6, der Substr ist: Heutiges Wetter
mb_strlen-Funktion Der Prototyp 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-Chinesisch-Abfangfunktion ohne verstümmelte Zeichen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!