UTF-8 Zeichenketten mit PHP verarbeiten

24. Sep 2010

Bei der Verarbeitung von UTF-8 Zeichenketten mit PHP sollten Sie grundsätzlich mb-Funktionen von PHP nutzen.

Verwenden Sie grundsätzlich die Multibyte String Funktionen (http://de.php.net/manual/de/ref.mbstring.php) von PHP, um Zeichenketten zu Verarbeiten.

PHP und UTF-8

Alle Weblication Inhalte werden in UTF-8 gespeichert. Vor der Ausgabe können Sie diese nachträglich mit PHP weiterverarbeiten. Wichtig ist, dass hierbei Funktionen genutzt werden, die sicherstellen, dass das Ergebnis auch UTF-8 kodiert ist.

Neben den Standard Funktionen zur Zeichenkettenverarbeitung wie z.B. substr bietet PHP auch äquivalente Funktionen an, die UTF-8 unterstützen.

Bei der Unterstützung von UTF-8 behandeln die Funktionen UTF-8 Zeichen, die intern aus mehreren Zeichen bestehen, wie ein Zeichen.

In der Praxis

Den Unterschied der Zeichenbehandlung sehen Sie sehr einfach, wenn Sie die Länge einer Zeichenkette, die Umlaute enthält mit strlen bzw mb_strlen ausgeben.

Eine typische Funktion ist das Abschneiden von Zeichenketten, um z. B. zu verhindern, dass bei der Ausgabe umgebrochen wird. Wird in diesem Fall substr verwendet, kann es vorkommen, dass der Text innerhalb eines UTF-8 Zeichens abgeschnitten wird, da dieses intern aus zwei Zeichen besteht. Tritt dieser Fall ein, ist das Ergebnis nicht mehr UTF-8 konform. Durch die Verwendung von mb_substr wird dieses Verhalten verhindert.

Kürzen von Überschriften über mb-Funktionen

if(mb_strlen($headline) > 30){
  $headline = mb_substr(0, 27).'...';
}