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 :

Mettre en majuscules les premières lettres accentuées [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 259
    Points : 195
    Points
    195
    Par défaut Mettre en majuscules les premières lettres accentuées
    Salut tout le monde.
    Alors, voila mon problème.
    Je veux mettre la première lettre de chaque mot en majuscule, par exemple, science-fiction devient Science-Fiction. Mais je voudrais aussi que si cette première lettre est accentuée, on enlève l'accent!
    J'ai donc mélangé deux codes (un trouvé sur le manuel Php et l'autre trouvé ici, mais je retrouve plus le topic ), et ça me donne ça au final :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $txt = "éscarpée";
            $accent="áàâäåãéèêëíìîïóòôöõúùûüýçñžæœazertyuiopqsdfghjklmwxcvbn";
            $maj="AAAAAAEEEEIIIIOOOOOUUUUYCNZÆŒAZERTYUIOPQSDFGHJKLMWXCVBN";
            $txt = preg_replace('/\\b(<a href="file://\\w)/e&#39;" target="_blank">\\w)/e'</a>, 'strtr("$1",$accent,$maj)', strtolower(trim($txt)));
            echo $txt;
    Et donc, chez moi, en local, ça me donne Escarpée... normal. Sauf que quand je le teste chez ifrance, ça me donne éScarpéE !!! La lettre après l'accent (ou la cédille...) se met en majuscule, et l'accent reste en première position!!!!
    Et je comprends pas pourquoi...
    Si vous pouvez m'éclairer (soit dit en passant, je ne comprends pas les caractères de mon expression régulière, veuillez m'en excuser )
    La vie n'est qu'une succession d'éternels recommencements

  2. #2
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    Salut, tu peux jeter un oeil à la fonction ucwords() : http://fr.php.net/manual/fr/function.ucwords.php

    Ca peut peut-être t'aider
    Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

    F.A.Q. : Java, PHP, (X)HTML / CSS

    N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 259
    Points : 195
    Points
    195
    Par défaut
    Euh... Es tu allé sur le lien que j'ai mis dans mon message? Elle ramène justement à la fonction ucwords...
    Et si tu essayes cette fonction, tu verras que la première lettre est certes en majuscule, mais qu'elle a gardé l'accent, ce que je ne veux pas. Et en plus, si tu mets un mot composé, ben le deuxième mot n'aura pas de majuscule.
    Donc ça ne suffit pas, et c'est pour ça que j'ai été obligé de faire ce bout de code.
    La vie n'est qu'une succession d'éternels recommencements

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 259
    Points : 195
    Points
    195
    Par défaut
    J'ai effectué quelques tests depuis, et je tiens à préciser que sur ifrance, la fonction ucwords ne renvoie même pas la première lettre en majuscule si celle-ci est accentuée.
    La vie n'est qu'une succession d'éternels recommencements

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2006
    Messages : 89
    Points : 89
    Points
    89
    Par défaut
    et phpinfo() de ton server sur ifrance sa te sors quoi?

    si jamais tu arrive pas a faire functionner c'est functin PHP .. tu peu toujours te coder la meme function avec des strpos et des preg_replace dans une boucle
    Anack Shol Kree Shel

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 259
    Points : 195
    Points
    195
    Par défaut
    Alors, oui, j'ai bien fait un phpinfo()... Mais je dois regarder quoi?
    Quant à faire une boucle... euh... si y a moyen d'éviter...
    La vie n'est qu'une succession d'éternels recommencements

  7. #7
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 727
    Points
    1 727
    Par défaut
    C'est parce qu'il n'yavait pas la meme locale sur ifrance que là où tu as testé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setlocale (LC_ALL, 'fr_FR');
    Cela influera sur strtolower() et preg_replace()

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2003
    Messages
    1 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2003
    Messages : 1 273
    Points : 4 100
    Points
    4 100
    Par défaut
    Tu as aussi la fonction string strtr ( string str, string from, string to ) au lieu d'utiliser un preg_replace

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 259
    Points : 195
    Points
    195
    Par défaut
    Merci beaucoup Gruik!!!
    Ca marche nickel maintenant!
    Ca fait plaisir! Merci!!!
    La vie n'est qu'une succession d'éternels recommencements

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

Discussions similaires

  1. Mettre en majuscule les 1eres lettres d'un JTextField
    Par coolanso dans le forum Composants
    Réponses: 4
    Dernier message: 05/01/2012, 17h22
  2. Mettre en majuscule les premieres lettres d'un prenom compose
    Par rimbaut dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 14/04/2010, 13h55
  3. Réponses: 2
    Dernier message: 27/08/2009, 17h10
  4. Mettre en majuscule la première lettre d'un mot
    Par bobosh dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 05/09/2008, 07h55
  5. Mettre en majuscule la première lettre du nom d'une nouvelle feuille excel
    Par titemireille dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 16/06/2008, 22h31

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