Türchen 19: PHP Multibyte String-Funktionen

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!

0 Kommentare

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert