Elya: Stringlänge und utf-8-Zeichen

Beitrag lesen

Hallo,

ich versuche, kyrillische utf-8-Zeichenketten nach bestimmten definierten Regeln in lateinische umzusetzen. Dazu schreibe ich die Zeichen zunächst einzeln in ein Array. Da mir str_split() und PHP5 noch nicht zur Verfügung steht, habe ich folgendes gebastelt:

  
for ($i=0;$i<strlen($string);$i+=2){  
$substr = substr($string,$i,2); // ein unicode-Zeichen besetzt 2  
                               //Zeichen - deshalb in Zweierschritten  
array_push($kyr_string,$substr);  
    }  

Das entstandene Array wird mit Hilfe einer Library (auch Arrays, Regeln und Ausnahmen) in andere Zeichen umgesetzt. Der Haken ist der Zweierschritt in dem substr-Ausdruck oben. Sind nämlich z.B. einfache lateinische Zeichen im String enthalten, für die strlen($zeichen) == 1 gilt, zerhackt die obige Schleife die weiteren Zeichen (bzw packt sie auch in Zweierpäckchen), so daß die Umsetzung später an dieser Stelle abbricht.

Einigermaßen verständlich?

Ich habe versucht, utf8_encode() auf die Zeichenkette anzuwenden, aber das hat keinen Effekt. Das größte Problem bei der Sache ist vermutlich mein mangelndes Basiswissen über den Aufbau von Unicode ;-) - hat jemand eine Idee, wie ich ganz am Anfang schon die nicht-kyrillischen Zeichen aus dem String fischen und separat behandeln kann?

Möglicherweise ist das Ganze mit regulären Ausdrücken weit eleganter zu lösen, aber die sind für mich leider immer noch ein schwarzes Loch.

Danke fürs Nachdenken.

Gruß aus Köln-Ehrenfeld,

Elya