Ausführliche Erklärung, wie PHP die Länge chinesischer Strings korrekt berechnet

PHPz
Freigeben: 2023-04-11 11:46:01
Original
5602 Leute haben es durchsucht

Bei der PHP-Programmierung stoßen wir häufig auf Szenarien, in denen wir die Länge eines Strings berechnen müssen. Im Allgemeinen sind wir es gewohnt, die Funktion strlen() oder mb_strlen() zur Berechnung der Stringlänge zu verwenden. Beim Umgang mit chinesischen Zeichenfolgen werden wir jedoch feststellen, dass es bei der Verwendung der Funktion strlen () zu Problemen kommt, da die Länge chinesischer Zeichen nicht gemäß der allgemeinen Zeichenberechnungsmethode berechnet wird. Wie können wir also die Länge chinesischer Strings in PHP richtig berechnen? Lassen Sie uns weiter unten verwandte Themen besprechen.

1. So berechnen Sie die Stringlänge in PHP

In PHP gibt es zwei Möglichkeiten, die Stringlänge zu berechnen: Eine ist die einfache Zeichenzählung und die andere basiert auf der tatsächlichen Zeichenlänge. Bei der Berechnung der Länge einer Zeichenfolge treten zwei Situationen auf:

  1. ASCII-Zeichen: Wenn Sie die Länge von ASCII-Zeichen berechnen, verwenden Sie einfach direkt die Funktion strlen().
  2. Chinesische Schriftzeichen: Chinesische Schriftzeichen belegen zwei Bytes in Unicode und zwei Bytes oder drei Bytes in GBK. Bei der Berechnung der Länge chinesischer Schriftzeichen muss diese anhand der tatsächlichen Länge der Schriftzeichen berechnet werden.

2. Das Problem des Missbrauchs der Funktion strlen()

Die Funktion strlen() ist eine grundlegende Funktion in PHP, die zur Berechnung der Länge einer Zeichenfolge verwendet wird. Bei der Verarbeitung chinesischer Zeichenfolgen treten jedoch Probleme bei der Verwendung der Funktion strlen() auf und die Längenberechnung ist ungenau. Dies liegt daran, dass PHP standardmäßig die ASCII-Kodierung verwendet und bei Unicode-kodierten chinesischen Zeichen ein Zeichen in mehrere Bytes zerlegt wird, was zu einem Fehler bei der Berechnung der Länge führt.

Wenn Sie beispielsweise die Funktion strlen() verwenden, um die Länge der chinesischen Zeichenfolge „China“ zu berechnen, gibt das Ergebnis 6 statt der erwarteten 2 zurück. Dies liegt daran, dass die Funktion strlen() die chinesischen Zeichen „中“ trennt " und "国" In 3 Bytes analysiert.

3. Lösung des Problems

Da die Funktion strlen() die Länge chinesischer Schriftzeichen normalerweise nicht berechnen kann, wie sollen wir die Länge chinesischer Schriftzeichen berechnen? Im Folgenden sind drei häufig verwendete Lösungen aufgeführt:

  1. Verwenden Sie die Funktion mb_strlen().

PHP stellt die Funktion mb_strlen() zur Lösung des Problems der Zeichenfolgenlänge bereit. Die Funktion mb_strlen() ist eine Multibyte-Stringlängenfunktion, die die tatsächliche Länge des Strings einschließlich chinesischer Zeichen zurückgibt. Wenn Sie die Funktion mb_strlen() verwenden, um die Länge einer chinesischen Zeichenfolge zu berechnen, müssen Sie den zweiten Parameter übergeben, um die Zeichenkodierung anzugeben, zum Beispiel:

$str = '中国';
$len = mb_strlen($str, 'UTF-8'); // 返回 2
Nach dem Login kopieren

Diese Methode ist die gebräuchlichste und empfohlene Methode, da mb_strlen() Die Funktion ist gut lesbar und wartbar. Beachten Sie, dass die mbstring-Erweiterung installiert werden muss, bevor Sie die Funktion mb_strlen() verwenden.

  1. Verwenden Sie die Funktion iconv_strlen()

Die Funktion iconv_strlen() kann zum Berechnen der Länge einer Zeichenfolge verwendet werden und kann auch die Länge chinesischer Zeichenfolgen korrekt verarbeiten. Die Struktur der Funktion iconv_strlen() ähnelt der Funktion strlen(), außer dass Sie bei der Berechnung der Länge den zweiten Parameter übergeben müssen, um die Zeichenkodierung anzugeben, zum Beispiel:

$str = '中国';
$len = iconv_strlen($str, 'UTF-8'); // 返回 2
Nach dem Login kopieren

Ähnlich der Funktion mb_strlen(), Sie müssen außerdem bestätigen, bevor Sie die Funktion iconv_strlen() verwenden. Die Erweiterung iconv ist installiert.

  1. Berechnen Sie die Anzahl der Bytes und teilen Sie sie durch 2 oder 3

Zusätzlich zur Verwendung der mit PHP gelieferten Funktionen können wir das Problem der Längenberechnung auch durch Berechnen der Anzahl der Bytes chinesischer Zeichen lösen wie folgt:

$str = '中国';
$len = ceil((strlen($str) - mb_strlen($str, "UTF-8")) / 2) + mb_strlen($str, "UTF-8");
Nach dem Login kopieren

Der obige Code berechnet zunächst die Anzahl der Bytes chinesischer Zeichen, dividiert sie dann durch die tatsächliche Länge von 2 oder 3 und addiert schließlich die Länge der englischen Zeichen, um die korrekte chinesische Zeichenfolgenlänge zu erhalten.

4. Zusammenfassung

Kurz gesagt, in der PHP-Programmierung ist die Berechnung der chinesischen Stringlänge etwas Besonderes und erfordert unsere besondere Aufmerksamkeit. Um Fehler zu vermeiden, sollten wir eine geeignete Berechnungsmethode wählen, z. B. die Verwendung der Funktion mb_strlen() oder iconv_strlen() oder die Berechnung der Länge, indem wir die Anzahl der Bytes zählen und durch 2 oder 3 dividieren. Dadurch kann die Richtigkeit der chinesischen Zeichenlänge sichergestellt und Berechnungsfehler und Datenanomalien verhindert werden.

Das obige ist der detaillierte Inhalt vonAusführliche Erklärung, wie PHP die Länge chinesischer Strings korrekt berechnet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!