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

Était-ce utile?

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.

Autres conseils

Peut-être que cette fonction vous aide en combinaison avec mb_strlen:

mb_strcut ou mb_substr

EDIT: Par exemple, vous pouvez aller comme ceci:

$string = 'cioèòà';
for ($i=0;$i<mb_strlen($string);$i++) {
  echo mb_substr($string, $i, 1);
}

Cela vous écho tous les simples caractères out.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top