2016-04-16 16 views
-1

Ich habe versucht, es so zu tun:Wie durchlaufen Sie alle Zeichen in einer Zeichenfolge?

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

aber es scheint falsch zu sein, wenn Zeichen, die in 1 Byte nicht beteiligt sind, passen. strlen ("ää") gibt zum Beispiel 4 zurück, was bedeuten würde, dass sie aus 2 Bytes bestehen.

Wie gehe ich durch jedes Zeichen in PHP?

Antwort

5

Dieser Code Schleifen durch die Bytes in der Zeichenfolge, nicht die Zeichen .... verwenden, um die mb_* Funktionen für Multibyte Zeichenketten arbeiten

for ($i = 0; $i < mb_strlen($s); $i++) { 
    $char = mb_substr($s, $i, 1); 
    ... 
} 
0

einfache einzeilige "Trick" zu Satz von Mehrbyte-Zeichen erhalten unter Verwendung preg_split Funktion mit /u (UTF-8) Modifikator:

$str = "äänä"; 
$chars = preg_split("//u", $str, 0, PREG_SPLIT_NO_EMPTY); 

print_r($chars); 

der Ausgang:

Array 
(
    [0] => ä 
    [1] => ä 
    [2] => n 
    [3] => ä 
) 
Verwandte Themen