Heim >Backend-Entwicklung >PHP-Problem >PHP-Chinesisch-Abfangfunktion ohne verstümmelte Zeichen

PHP-Chinesisch-Abfangfunktion ohne verstümmelte Zeichen

(*-*)浩
(*-*)浩Original
2019-09-07 09:43:393858Durchsuche

PHP-Chinesisch-Abfangfunktion 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:

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

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