Utilisation ucwords
t671
Messages postés
1478
Date d'inscription
Statut
Membre
Dernière intervention
-
t671 -
t671 -
Bonjour,
Dans un masque de saisie, j'inscrit des prénoms que je récupère pour remplir ma bd.
A la récupération, je met tout le champs prénom en minuscule :
$prenom = strtolower($prenom);
Puis, je met la première de chaque mot (prénom) en majuscule (car il peut y avoir 2,3,ou 4 prénoms) :
$prenoms = ucwords($prenom);
Le problème, c'est que s'il y a des prénoms composés (jean-pierre), jean prends bioen la majuscule, mais pas pierre, car il y a un trait d'union devant.
Comment mettre une majuscule après chaque trait d'union ?
Merci.
Dans un masque de saisie, j'inscrit des prénoms que je récupère pour remplir ma bd.
A la récupération, je met tout le champs prénom en minuscule :
$prenom = strtolower($prenom);
Puis, je met la première de chaque mot (prénom) en majuscule (car il peut y avoir 2,3,ou 4 prénoms) :
$prenoms = ucwords($prenom);
Le problème, c'est que s'il y a des prénoms composés (jean-pierre), jean prends bioen la majuscule, mais pas pierre, car il y a un trait d'union devant.
Comment mettre une majuscule après chaque trait d'union ?
Merci.
11 réponses
-
Merci à vous tous .............
J'ai une autre solution, plus simple :
$prenom = str_replace ('-', '¿ ', $prenom); $prenom = ucwords ($prenom);//Pour ceux qui à l'origine sont précédés par des '-' $prenom = str_replace ('¿ ', '-', $prenom); -
Tu fais une syntaxe qui vérifies le tiret.
Ensuites tu fais un str_replace du tiret par un espace, tu fais ton ucwords et tu str_replace le espace par tiret.
-
Oui, mais je peux avoir plusieurs prénoms espacés par un espace, et certains prénoms avec un tiret (marie pauline marie-claire) !
Je ne peux donc pas remplacer tous les espaces par un tiret ........ -
Pourquoi plusieurs prénoms séparés par des espaces? Ce serait du genre le prénom principal et les prénoms secondaires?
Dans ce cas là, pourquoi ne pas les séparer par des virgules au moment de l'insertion et faire le traitement en php de l'autre coté. C'est beaucoup plus simple non?
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
C'est à dire placer les virgules à la saisie, ou placer les virgules à l'insertion dans la BD ?
-
Salut,
Voici un exemple de solution :<?php function getUpperName($string) { $stringLenght = strlen($string); // on parcours les caractères de la chaine for ($i = 0; $i < $stringLenght; $i++) { // si le caractère courant est un tiret et qu'il existe un caractère suivant if ($string[$i] == '-' && $i < $stringLenght - 1) { // on transforme en majuscule le caractère suivant $string[$i + 1] = strtoupper($string[$i + 1]); } } return ucwords($string); } echo getUpperName('marie-helene'); echo '<br />'; echo getUpperName('jean-pierre henri'); ?>
Bonne journée -
Désole Pitet, mais ça ne fonctionne pas ! Ni la 1° partie, ni la 2° n'ont une majuscule .............
-
Désolé t671 mais ce code fonctionne bien chez moi, et je ne comprend absolument pas pourquoi il ne fonctionne pas pour toi.
-
Voilà comment je l'ai adapté, mais ça ne fonctionne pas :
function getUpperName($prenom) { $stringLenght = strlen($prenom); // on parcours les caractères de la chaine for ($i = 0; $i < $stringLenght; $i++) { // si le caractère courant est un tiret et qu'il existe un caractère suivant if ($prenom[$i] == '-' && $i < $stringLenght - 1) { // on transforme en majuscule le caractère suivant $prenom[$i + 1] = strtoupper($prenom[$i + 1]); } } }
J'ai peut-être oublié qqchose ???? -
-
Il manque le return dans l'adaptation que tu as faite :
return ucwords($prenom);
Ça devrait marcher beaucoup mieux avec ceci :)