Wieder Umlaute und PHP

hier ist meine Version:

CODE
$wert = 'aeouäÄöÖüÜß';

$i = 0;
while($i<strlen($wert)) {
$res = '';
$ordc = ord($wert[$i]);

if ($ordc>=240) $i+=3;
elseif ($ordc>=224) $i+=2;
elseif ($ordc>=192) {
$i++;
if ($i<strlen($wert))
switch (ord($wert[$i])) {
// ä
case 164:
case 132: $res = 'ae.gif'; break;
// ö
case 182:
case 150: $res = 'oe.gif'; break;
// ü
case 188:
case 156: $res = 'ue.gif'; break;
// ß
case 159: $res = 'sz.gif'; break;
}
} else {
switch (strtolower($wert[$i])) {
case 'a': $res = 'a.gif'; break;
case 'e': $res = 'e.gif'; break;
case 'o': $res = 'o.gif'; break;
case 'u': $res = 'u.gif'; break;
}
}
$i++;

// Ausgabe
if (!empty($res))
echo $res . "<br />\n";
}



wobei ich die handhabung mit den switch/case wenn ich es verwenden würde umgehen würde indem ich einen Array verwenden würde ansonsten ist es zu viel code...
 
QUOTE (Maik @ Sa 17.2.2007, 14:42)nicht gerade eine tolle vorgehensweise... zumal du mit ca. 100 verschiedenen Zeichen immer diese Umlaute driffst. Wenn man es wenigstens annähernd richtig machen will, sollte man prüfen ob das vorherige Zeichen auf ein Multibyte Zeichen hindeutet... Also immer prüfen, vergleichen mit 195 bzw. 0xC3

Der obige Pseudocode geht davon aus, daß die Datei (siehe die Beiträge darüber) wieder als ASCII gespeichert wird - nicht als UTF-8. Dann belegt 'Ü' ein Byte mit dem Integer-Wert 220, das ist eindeutig. Bei einem 1-Byte-Zeichensatz ist die Überprüfung auf eine Multi-Byte-Zeichenfolge sinnlos.
 
Zurück
Oben