Heim >Backend-Entwicklung >PHP-Problem >PHP implementiert das Abfangen chinesischer Zeichenfolgen ohne verstümmelte Zeichen

PHP implementiert das Abfangen chinesischer Zeichenfolgen ohne verstümmelte Zeichen

(*-*)浩
(*-*)浩Original
2019-09-27 09:57:473528Durchsuche

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!

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