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

PHP & Base de données Discussion :

Remplacer caractères spéciaux dans une chaine


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 12
    Par défaut Remplacer caractères spéciaux dans une chaine
    Bonjour à tous,

    Dans le cadre de la mise en place d'un système d'URL Rewriting, j'essaie de transformer des chaines représentant des noms en chaine propre pour les URLS.

    J'ai fais plusieurs recherches et trouvé plusieurs fonctions qui faisais cette transformation, or aucune ne fonctionne correctement. Je pense que j'ai un problème d'encodage.

    Voici mon code :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function simpleName($chaine){
            //      les accents
            $chaine = trim($chaine);
            $chaine = strtr($chaine,"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ","aaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn");
            //      les caracètres spéciaux (autres que lettres et chiffres en fait)
            $chaine = preg_replace('/([^.a-z0-9]+)/i', '', $chaine);
            $chaine = strtolower($chaine);
            return $chaine;
    }
     
    echo (simpleName('Hôtel Plazza'));
    Je souhaiterai obtenir le résultat : hotelplazza or j'obtiens hnutelplazza

    Auriez vous une explication ? Merci !!

  2. #2
    mon_nom_est_personne
    Invité(e)
    Par défaut
    d'apres ce que j'en comprend ta fonction preg_replace remplace tout les alphanum par rien. Plus, tu devrais mettre strtolower avant la regexp car ta regexp ne prend pas en charge les majuscule.

    Donc en gros $chaine deviens vide ou ne garde que les majuscule. Utilise plutot var_dump quand tu debug car ca va te montrer si la valeur de retour est null ou une chaine vide ou autre

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 12
    Par défaut
    Citation Envoyé par mon_nom_est_personne Voir le message
    d'apres ce que j'en comprend ta fonction preg_replace remplace tout les alphanum par rien. Plus, tu devrais mettre strtolower avant la regexp car ta regexp ne prend pas en charge les majuscule.

    Donc en gros $chaine deviens vide ou ne garde que les majuscule. Utilise plutot var_dump quand tu debug car ca va te montrer si la valeur de retour est null ou une chaine vide ou autre
    Oui en fait cette ligne fonctionne bien. C'est celle du dessus qui pose problème, lors du remplacement des accents. Le replacement des caractères spéciaux fonctionne bien.

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/12/2013, 16h40
  2. Réponses: 0
    Dernier message: 05/07/2013, 14h39
  3. Remplacer des caractères spéciaux dans une chaine
    Par enzostar dans le forum Langage
    Réponses: 5
    Dernier message: 29/09/2012, 23h16
  4. Suppression espace et caractère spéciaux dans une chaine de caractère
    Par arnaud036 dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 12/10/2007, 10h51
  5. [RegEx] caractère spéciaux dans une chaine
    Par BigBarbare dans le forum Langage
    Réponses: 3
    Dernier message: 12/04/2006, 11h53

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