22 Stimmen

PHP: strlen - Falsches Ergebnis für Umlaute

Frage von Gast | 05.03.2014 um 09:04

Ich benutze die PHP-Funktion strlen() um die Länge einer Nutzereingabe zu prüfen. Leider funktioniert dies aber nur bei Strings, die keine deutschen Umlaute enthalten.

echo strlen("abc");  // Ergebnis: 3
echo strlen("äbc");  // Ergebnis: 4

Ich brauche in dem Script die genaue Anzahl der verwendeten Zeichen und hätte gerne sowohl für "abc" als auch für "äbc" das Ergebnis 3.

Ist das ein Bug von PHP oder was kann man da machen? 

AntwortenPositivNegativ
5Beste Antwort5 Stimmen

Ein einzelner Buchstabe kann je nach verwendeter Zeichenkodierung auch länger als ein einzelnes Byte sein. Ein typischer Fall ist beispielsweise die auf den meisten Internetseiten verwendete Kodierung UTF-8. In dieser Enkodierung werden Zeichen wie a-z mit einem Byte kodiert, die Umlaute dagegen mit mehreren Bytes.

Die Funktion strlen() zählt nur die Anzahl der Bytes und berücksichtigt nicht die Bedeutung oder Kodierung dieser Bytes. Deswegen solltest du besser die Funktion mb_strlen() statt strlen() verwenden:

echo mb_strlen("abc", "utf-8");  // Ergebnis: 3
echo mb_strlen("äbc", "utf-8");  // Ergebnis: 3

Die Multibyte-Funktion mb_strlen() berücksichtigt im Gegensatz zu strlen() die Codierung und die damit einhergehende unterschiedliche Zeichenlänge.

Als ersten Parameter gibst du den String an, als zweiten die Kodierung. Wenn deine Website wie die meisten Internetseiten UTF-8 kodiert ist, gibst du als Kodierung "utf-8" an.
06.03.2014 um 20:52

AntwortenPositiv Negativ
Antworten

Ähnliche Themen

PHP: Zeit und Performance messen

Tutorial | 0 Kommentare

PHP: Upload großer Dateien

Tutorial | 0 Kommentare

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.