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 :

Première lettre majuscule d'un mot composé


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    mai 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : mai 2006
    Messages : 22
    Points : 13
    Points
    13
    Par défaut Première lettre majuscule d'un mot composé
    Bonjour,

    Je cherche depuis maintenant plusieurs minutes un script php me permettant de tansformer un prénom composé comme suit :
    avant : jean-louis
    après : Jean-Louis

    Comme indiqué ci-dessus, je souhaite mettre en majuscule la première lettre de chaque mot d'un mot composé.

    Merci de votre aide

  2. #2
    Membre expert
    Inscrit en
    janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Chercher quelques minutes c'est "un peu" léger quand meme non?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    function majuscules($inChaine)
    {
    $tiretIndex = strpos($inChaine, '-');
    $maChaine = strtoupper($inChaine[0]) . substr($inChaine, 1, $tiretIndex);
    $maChaine .= strtoupper($inChaine[$tiretIndex+1]) . substr($inChaine, $tiretIndex + 2, strlen($inChaine) - $tiretIndex -2);
    return $maChaine;
    }
     
    $chaine = "jean-louis";
    echo majuscules($chaine);
    ?>
    c'est moche et mal fait mais ca marche

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : octobre 2002
    Messages : 1 138
    Points : 1 504
    Points
    1 504
    Par défaut
    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
    <?php
    $prenom='jean-marie-francois';
    $elements_prenom=explode("-",$prenom);
    $total=count($elements_prenom);
    $prenom_modif='';
    $cpt==0;
    if($total>0){
            foreach($elements_prenom as $partie){
                 $partie[0]=strtoupper($partie[0]);
                 if($cpt!=($total-1)){
                    $prenom_modif.=$partie.'-';
                 }else
                 {
                    $prenom_modif.=$partie;
                 }
                 $cpt++;
            }
    }
    echo $prenom_modif;
    ?>
    A priori ca devrait le faire meme si il doit ya voir plus simple à mon sens.

  4. #4
    Membre à l'essai
    Inscrit en
    mai 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : mai 2006
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    Ok Merci à tous les 2 !
    Je vais prendre l'une des 2 solutions... pas grave si ce n'est pas "hyper" optimisé.

    @koopajah : Je savais que je ferais réagir avec ma recherche de quelques minutes...

  5. #5
    Membre expert
    Inscrit en
    janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Prends la version de Raideman elle marche pour plusieurs tirets ^^

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2002
    Messages : 6 152
    Points : 17 774
    Points
    17 774
    Par défaut
    Une version utilisant une expression régulière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $in = 'pierre-éric';
    $out = preg_replace('~\b[[:lower:]]~e', 'strtoupper("\0")', $in);
    echo $out;

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    octobre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2009
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Majuscules aux prénoms composés séparés par des tirets ou des espaces
    J'ai remanié le code de Raideman pour qu'il prenne en charge les prénoms qui ont des espaces au lieu du tiret.

    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
    38
    function prenom($prenom){
    	$elements_prenom=explode("-",$prenom);
    	$total=count($elements_prenom);
    	$prenom_modif='';
    	$cpt==0;
    	if (count($elements_prenom)>1) {
    		foreach($elements_prenom as $partie){
    			$partie[0]=strtoupper($partie[0]);
    			if($cpt!=($total-1)){
    				$prenom_modif.=$partie.'-';
    			}else
    			{
    				$prenom_modif.=$partie;
    			}
    			$cpt++;
    		}
    	}else{
    		$elements_prenom=explode(" ",$prenom);
    		$total=count($elements_prenom);
    		$prenom_modif='';
    		$cpt==0;
    		if($total>0){
    			foreach($elements_prenom as $partie){
    				$partie[0]=strtoupper($partie[0]);
    				if($cpt!=($total-1)){
    					$prenom_modif.=$partie.'-';
    				}else
    				{
    					$prenom_modif.=$partie;
    				}
    				$cpt++;
    			}
    		}
    		$prenom_modif = str_replace('-',' ',$prenom_modif);
    	}
     
    	return $prenom_modif;
    }
    J'ai nettoyé toute ma base de contacts avec ca fait du bien un bon petit formattage comme ça !

  8. #8
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    janvier 2007
    Messages
    1 554
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : janvier 2007
    Messages : 1 554
    Points : 2 353
    Points
    2 353
    Par défaut
    Pour les prénom à espaces tu pouvais simplement faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo ucwords(strtolower($prenom));
    Zend Certified PHP Engineer

    « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    octobre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2009
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Ah oui en effet ça marche très bien aussi !

    Merci !

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    octobre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2009
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    J'ai suivi vos conseils et cela semble bien marcher.

    Voici ma requetes pour le formattage du prénom (Première Lettre de Chaque Nom en Majuscule) :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $req = mysql_query($sql);
    $prenom = utf8_decode(mysql_result($req,0));
    $prenomclean = preg_replace('~\b[[:lower:]]~e', 'strtoupper("\0")', strtolower(sansaccents(trim($prenom))));
    update_donnees_champs_by_id_donnee($id_donnee,'ligne_2',mysql_real_escape_string($prenomclean));
    Et voici celle pour le formattage du nom (TOUT EN MAJUSCULES) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $req = mysql_query($sql);
    $nom = utf8_decode(mysql_result($req,0));
    $nomclean = strtoupper(sansaccents(trim($nom)));
    update_donnees_champs_by_id_donnee($id_donnee,'ligne_1',mysql_real_escape_string($nomclean));
    N'hésitez pas à me dire si ce code vous semble perfectible ou potentiellement dangereux (je débute et ne suis pas à l'abri d'erreurs)

    PS : La fonction 'update_donnees_champs_by_id_donnee' est une fonction du CMS 'SPIP'

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

Discussions similaires

  1. Première lettre majuscule
    Par lordmao dans le forum Développement de jobs
    Réponses: 6
    Dernier message: 23/01/2012, 13h27
  2. Réponses: 0
    Dernier message: 31/05/2011, 19h59
  3. Réponses: 2
    Dernier message: 27/08/2009, 18h10
  4. Première lettre d'un mot en majuscule
    Par danyboy85 dans le forum Général Java
    Réponses: 6
    Dernier message: 23/04/2008, 20h20
  5. Mettre la première lettre des mots en majuscule
    Par seb.49 dans le forum Langage
    Réponses: 8
    Dernier message: 23/05/2003, 15h26

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