Utilisation ucwords
t671
Messages postés
1632
Statut
Membre
-
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.
A voir également:
- Utilisation ucwords
- Utilisation chromecast - Guide
- Télécharger gratuitement notice d'utilisation - Guide
- La ressource demandée est en cours d'utilisation - Forum Téléphones & tablettes Android
- Manuel utilisation batigest connect pdf - Forum compta / gestion
- Logiciel en Cours d'utilisation ? ✓ - Forum Logiciels
11 réponses
Merci à vous tous .............
J'ai une autre solution, plus simple :
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.
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 ........
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?
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
Salut,
Voici un exemple de solution :
Bonne journée
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 :
J'ai peut-être oublié qqchose ????
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 ????