IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Utilisation de la fonction strtr


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de tentsuken
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 89
    Par défaut Utilisation de la fonction strtr
    Bonjour,
    Je souhaite convertir une chaine pour l'optimiser pour la réécriture d'url
    j'ai donc cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    function convert_for_url($chaine) {	
    	$remplace = array('à'=>'a',
    				'á'=>'a',
    				'â'=>'a',
    				'ã'=>'a',
    				'ä'=>'a',
    				'å'=>'a',
    				'ò'=>'o',
    				'ó'=>'o',
    				'ô'=>'o',
    				'õ'=>'o',
    				'ö'=>'o',
    				'è'=>'e',
    				'é'=>'e',
    				'ê'=>'e',
    				'ë'=>'e',
    				'ì'=>'i',
    				'í'=>'i',
    				'î'=>'i',
    				'ï'=>'i',
    				'ù'=>'u',
    				'ú'=>'u',
    				'û'=>'u',
    				'ü'=>'u',
    				'ÿ'=>'y',
    				'ñ'=>'n',
    				'ç'=>'c',
    				'ø'=>'0'
    				);
    	$chaine = strtr($chaine,$remplace); 
            //$chaine = strtolower(strtr($chaine,"àâäåãáçéèêëïîìíñöôóòõùûüúÿ", "aaaaaaceeeeiiiinooooouuuuy")); //Remplacement des caractères accentués par leurs équivariants non accentués
            $chaine = preg_replace('#[^a-z0-9_-]#','-',$chaine); //Remplace tous les caractères non alphanumérique par un tiret
            while (strpos($chaine,'--') !== false) $chaine = str_replace('--','-',$chaine); //Suppression des tiret en trop
            return $chaine;
     
    }
    Mais les caracteres accentuer ne sont pas remplacer par leur equivalent sans accents et se retrouve supprimmé.

    Petite précision, sur un page de test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $chaine2 = strtr($chaine, 'àáâãäåòóôõöøèéêëçìíîïùúûüÿñ', 'aaaaaaooooooeeeeciiiiuuuuyn');
    ne fonctionne pas

    mais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    $remplace = array('à'=>'a',
    				'á'=>'a',
    				'â'=>'a',
    				'ã'=>'a',
    				'ä'=>'a',
    				'å'=>'a',
    				'ò'=>'o',
    				'ó'=>'o',
    				'ô'=>'o',
    				'õ'=>'o',
    				'ö'=>'o',
    				'è'=>'e',
    				'é'=>'e',
    				'ê'=>'e',
    				'ë'=>'e',
    				'ì'=>'i',
    				'í'=>'i',
    				'î'=>'i',
    				'ï'=>'i',
    				'ù'=>'u',
    				'ú'=>'u',
    				'û'=>'u',
    				'ü'=>'u',
    				'ÿ'=>'y',
    				'ñ'=>'n',
    				'ç'=>'c',
    				'ø'=>'0'
    				);
    $chaine2 = strtr($chaine,$remplace);
    fonctionne très bien

    Si quelqu'un pouvait m'aider.
    Cordialement,
    Tentsuken

  2. #2
    Membre Expert
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Par défaut
    Chez moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo strtr('chàïné', 'àáâãäåòóôõöøèéêëçìíîïùúûüÿñ', 'aaaaaaooooooeeeeciiiiuuuuyn');
    affiche
    chaine

  3. #3
    Membre confirmé Avatar de tentsuken
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 89
    Par défaut
    Bonjour,

    cette ligne de commande affiche chez moi :
    chnan¯nn©
    Il n'y a qu'avec le array que les changement de caractère fonctionne sur mon site, mais quand je passe par une fonction, cela ne marche plus.

  4. #4
    Membre Expert
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Par défaut
    Il semblerait que ton fichier soit encodé en utf8.

    Or, cette fonction ne semble pas savoir gérer un autre type d'encodage que celui que php utilise par défaut (différent de utf8)

    une solution serait donc d'utiliser utf8_decode sur les chaines contenant des caractères spéciaux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo strtr(utf8_decode('chàïné'), utf8_decode('àáâãäåòóôõöøèéêëçìíîïùúûüÿñ'), 'aaaaaaooooooeeeeciiiiuuuuyn');

  5. #5
    Membre confirmé Avatar de tentsuken
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 89
    Par défaut
    Alors, la cela fonctione sur ma page de teste mai toujours pas au sein de ma fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function convert_for_url($chaine) {
       $chaine = strtolower(strtr(utf8_decode($chaine),utf8_decode('àâäåãáçéèêëïîìíñöôóòõùûüúÿ'), utf8_decode('aaaaaaceeeeiiiinooooouuuuy'))); 
       $chaine = preg_replace('#[^a-z0-9_-]#','-',$chaine); //Remplace tous les caractères non alphanumérique par un tiret
       while (strpos($chaine,'--') !== false) $chaine = str_replace('--','-',$chaine); //Suppression des tiret en trop
       return $chaine;
     
    }

  6. #6
    Membre Expert
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Par défaut
    quel est le résultat ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [LG]Utilisation de la fonction time
    Par kmitz dans le forum Langage
    Réponses: 4
    Dernier message: 08/04/2005, 13h05
  2. Utilisation de la fonction de déploiement
    Par mchicoix dans le forum XMLRAD
    Réponses: 4
    Dernier message: 01/03/2005, 14h35
  3. [LG]Utilisation de la fonction Random
    Par chloe95 dans le forum Langage
    Réponses: 1
    Dernier message: 01/03/2005, 14h20
  4. Utilisation de la fonction qsort
    Par Jsmeline dans le forum C
    Réponses: 8
    Dernier message: 28/01/2005, 12h40
  5. [LG]librairies : utiliser seulement quelques fonctions
    Par wwwroom dans le forum Langage
    Réponses: 13
    Dernier message: 14/05/2004, 22h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo