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?
Ähnliche Themen
PHP: Nur bestimmte Buchstaben, Zahlen und Zeichen in einem String zulassen
Tipp | 10 Kommentare
PHP: strStart und strEnd Funktionen
Tipp | 2 Kommentare
PHP Mail Funktion: UTF-8 Header in E-Mails
Info | 0 Kommentare
HTML Formular: Weiterleitung abhängig von Radiobutton oder Checkbox
Tutorial | 0 Kommentare
PHP: Aktuelles Datum und Zeit ermitteln
Tutorial | 0 Kommentare
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.
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:
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