11 Stimme

PHP: UTF-8 String zeichenweise durchlaufen

Frage von Gast | 07.03.2014 um 21:12

Ich würde gerne mit PHP einen String Zeichen für Zeichen durchlaufen. Bis jetzt habe ich dafür folgende Funktion entwickelt:

$s = 'abc'; // geht
$s = 'äüö'; // geht nicht

for ($i = 0; $i < strlen($s); $i++) {
  $c = $s[$i];
}

Leider funktioniert dies offenbar nur für ASCII Zeichen wie "abc". Sobald jedoch Unicode Zeichen, wie die deutschen Umlaute ("äüö") vorkommen, geht nichts mehr. Offenbar kommt die Funktion nicht mit Multibyte-Zeichen klar (ä besteht in UTF-8 ja aus 2 Bytes).

Was kann ich trotzdem tun, um einen String Zeichenweise in einer Schleife durchlaufen zu können?

AntwortenPositivNegativ
1Beste Antwort1 Stimme

Die meisten normalen PHP-Funktionen sind in der Tat nicht multibytefähig.

Du kannst es aber so probieren:

$s = 'abcäüö';
$arr = preg_split('//u', $s, -1, PREG_SPLIT_NO_EMPTY);

foreach ($arr as $v) {
  echo $v;
}

Mit preg_split teilst du den String in einzelne Zeichen und speicherst diese in einem Array ab. Den kannst du dann einfach durchlaufen.

Der Modifier "u" sorgt übrigens dafür, dass der String als UTF-8 behandelt wird.
08.03.2014 um 21:25

AntwortenPositiv Negativ
Antworten

Ähnliche Themen

PHP: Eine E-Mail versenden

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.