Sven Rautenberg: UTF-8 nur bei Strings, nicht bei einzelnen Zeichen?!

Beitrag lesen

Moin!

ich habe hier ein merkwürdiges Problem. Angenommen ich habe folgenden String:

$text = "„Übersicht”";

Wenn ich diesen String ausgebe, erhalte ich „Übersicht”, also alles in bester Ordnung. Möchte ich aber nur ein bestimmtes Zeichen ausgeben und ist dieses zufällig ein Sonderzeichen, wie z.B. so:

echo $text[0];

Damit gibst du das erste Byte aus. UTF-8-Zeichen bestehen aber aus einem bis vier Bytes. Du müßtest also eine Erkennungsroutine schreiben, die prüft, ob das auszugebende Byte Bestandteil eines Mehrbyte-Zeichens ist (das ist recht einfach, weil solche Bytes in UTF-8 das Bit 7 gesetzt haben), und dann alle zugehörigen Bytes links und rechts davon ebenfalls mit ausgeben.

Alternativ benutzt du einfach mb_substr(), die Multibyte-Variante von substr(). Das dürfte deutlich einfacher sein.

- Sven Rautenberg

--
"Love your nation - respect the others."