Gerade wenn es um String-Längen geht, gibt es bei Umlauten eine UTF-8 Problematik. In einem normalen „strlen“, in PHP, wird z.B. „Café“ als 5 Zeichen angegeben. In diesem Türchen gibt es eine gute Übersicht, was genau das Problem ist und wie man richtig damit umgeht.
Das UTF-8 Problem
In diesem Beispiel erkennt man sehr gut das Problem bei Umlaute und String-Funktionen.
<?php
strlen('Ä');
// => Länge: 2
// Das kommt daher, dass "Ä" mehrere
// Bytes benötigt.
strlen('Café');
// => Länge: 5
// Dasselbe auch bei "é"
Multibyte Abhilfe
Genau für diesen Anwendungsfall, dass ein Zeichen mehr als einen Byte benötigt, gibt es in PHP diverse Multibyte-Funktionen, die mit „mb_“ geprefixt werden.
<?php
mb_strlen('Ä');
// => Länge: 1
mb_strlen ('Café');
// => Länge: 4
// PHP hat für die meisten String-Funktionen
// eine Multibyte-Variante.
// Mehr auf dem nächsten Slide --->
Weitere Beispiele
Wie schon erwähnt gibt es diverse Multibyte-Varianten von String-Funktionen. Hier eine kleine Liste mit weiteren Beispielen:
mb_split
mb_str_pad
mb_str_split
mb_strcut
mb_strimwidth
mb_stripos
mb_stristr
mb_strlen
mb_strpos
mb_strrchr
mb_strrichr
mb_strripos
mb_strrpos
mb_strstr
mb_strtolower
mb_strtoupper
mb_strwidth
mb_substitute_character
mb_substr_count
mb_substr
[...]
Wenn ihr wirklich alles über Multibyte String-Funktionen erfahren wollt, empfehlen wir euch hier das PHP-Manual: https://www.php.net/manual/en/ref.mbstring.php. Happy Coding!