Guten Abend allerseits,
ich habe ein assoziatives Array mit Sonderzeichen (key), die beim SMS-Versand eine bestimmte Anzahl Zeichen einnehmen (value):
$chars = array("@"=>1,"$"=>1,"€"=>2);
Nun möchte ich in einem String jeden Buchstaben überprüfen, wieviele Zeichen er einnimmt. Das mache ich so:
$strl = strlen($text);
for ($i = 0;$i < $strl; $i++){
$c = $text{$i};
if (isset($chars[$c]))
$count += $chars[$c];
}
Das Problem: Einige Sonderzeichen bestehen "aus mehrereren Zeichen". So ist strlen("€") = 3. Das bedeutet das durchiterieren mit $text{$i} funktioniert nicht richtig, weil $text{$i} nur "ein Drittel" des Zeichens bekommt.
Mit mb_strlen($text,"UTF-8") bekomme ich immerhin die "richtige" Länge (also 1), aber das Euro-Zeichen bleibt trotzdem in 3 Teile unterteilt (0xe2, 0x82 und 0xac vgl. http://www.fileformat.info/info/unicode/char/20ac/index.htm).
Was kann ich tun, damit ich per Index auf das Eurozeichen im String $text zugreifen kann?
Herzlichen Dank