Hilfe mit erweiterten ASCII / Encoding in PHP!
-
03-10-2019 - |
Frage
Guten Abend Leute.
Dies ist mein Code:
static private function removeAccentedLetters($input){
for ($i = 0; $i < strlen($input); $i++) {
$input[$i]=self::simplify($input[$i]);
}
return $input;
}
static private function simplify($in){
$ord=ord($in);
switch ($ord) {
case 193: //Á...
return 'A';
case 98: //b
return 'a';
default:
return $in;
}
}
Ok. Dies ist das Bit das nicht funktioniert
case 193: //Á...
return 'A';
Und das ist das Bit, das tut:
case 98: //b
return 'a';
Dies sind nur für Zwecke zu testen.
Kann mir jemand sagen, was passiert ist? Ich hatte die gleiche Art von Fehlern vor, aber jetzt benutze ich keine erweiterten ASCII im Code selbst, die vor der Fehlerursache war.
Ich denke, es muss etwas mit Zeichencodierung zu tun hat, aber ich bin nicht sicher. By the way, ich bin Codierung in Eclipse und nach ihm, die Zeichenkodierung Ich verwende ist Cp1252.
Oh, und ja, wird der Code soll keine Umlaute wie á beseitigen à und ersetzen sie durch ihren Grund vogals, das heißt á-> a
Vielen Dank im Voraus
Lösung
Könnte es sein, dass, wenn Sie Multi-Byte-Zeichen haben, und Sie werden Schleifen jedes Zeichen mit strlen()
zu überprüfen, ob Sie durchgeschleift haben? strlen()
geht davon aus 1 Byte == 1 Zeichen.
Ich würde schauen Sie in bestehenden Umschrift Bibliotheken für PHP.