Aide avec ASCII étendu / encodage en PHP!
-
03-10-2019 - |
Question
Bonne soirée les gens.
Ceci est mon 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. Ceci est le bit qui ne fonctionne pas
case 193: //Á...
return 'A';
Et c'est le bit qui fait:
case 98: //b
return 'a';
Ce sont uniquement à des fins de test.
Quelqu'un pourrait-il me dire ce qui se passe? J'ai eu le même genre d'erreur avant, mais maintenant je ne suis pas en utilisant tout ASCII étendu dans le code lui-même, qui a été la cause de l'erreur avant.
Je pense qu'il doit avoir quelque chose à voir avec le codage des caractères, mais je ne suis pas sûr. Soit dit en passant, je codage dans Eclipse et, selon elle, le codage de caractères que je utilise est Cp1252.
Oh, et oui, le code est censé éliminer les lettres accentuées par exemple å à les remplacer par leurs vogals de base, à savoir â-> un
Merci à l'avance
La solution
pourrait-il que si vous avez des caractères multi octets, et vous en boucle à travers chaque personnage en utilisant strlen()
pour vérifier si vous avez bouclées? strlen()
prend 1 octet == 1 caractère.
Je regarde dans bibliothèques existantes translittération pour PHP.