PHP et strtr()

mariostar27 Messages postés 442 Statut Membre -  
 Utilisateur anonyme -
Bonjour,

Voila j'utilise la fonction strtr() pour modifier des caractères, voici mon code :

$fichier = strtr($fichier,
                        "ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ",
                        "aaaaaaceeeeiiiiooooouuuuyaaaaaaceeeeiiiioooooouuuuyy");

$fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $fichier);

echo $fichier."<br/>";


Au final, pour un nom comme ceci : déclaration j'obtiens da_claration.

Pourquoi strtr ne me change pas le caractère mais me l'ajoute ???
Pourquoi est-ce un a plutôt qu'un e ???
Pourquoi ai-je un _ alors que je ne devrais pas en avoir ???

Merci d'avance ^^



--
gwennael

2 réponses

  1. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    Bonjour,

    Tu as très probablement un problème d'encodage.
    Je dirais que ton fichier est en UTF-8, alors que ton script PHP est en ANSI.
    Convertis les deux dans le même encodage (préférentiellement l'UTF-8 pour les deux), et tout devrait aller mieux.

    Xavier
    0
    1. Utilisateur anonyme
       
      En effet, ça doit être ça ! J'ai encodé le script en UTF-8 et déclaré en ANSI. Résultat : dy_claration ! Essaye de convertir ton fichier en ANSI, avec Notepad++ par exemple, ou simplement avec le bloc-note Windows !
      0
  2. Utilisateur anonyme
     
    Est-ce qu'au départ, $fichier="déclaration" ? J'ai copié ton code tel quel moi ça me sort declaration, normal...
    0