Bonjour,
Pour passer un nom propre toujours entré dans la BD en majuscules, je n’ai pas trouvé de filtre « minuscules » ou équivalent sur Spip (mal cherché ?)
Donc j’utilise deux filtre php d’abord strtolower puis ucfirst.
Cela fonctionne sauf que si j’ai un nom composé (ex DUPONT-NEMOURS) seul Dupont est avec une majuscule. le résultat étant Dupont-nemours.
Existe-t-il une solution ?
Merci.
PS. J’ai oublié de dire que je ne peux pas le faire en css car c’est un export en csv.
,
Je me réponds.
La solution est issue d’une suggestion de gillesr sur le forum de Alsacréations et d’une visite sur www.php.net :
d’abord passer en minuscules avec la fonction strtolower
puis :
function toCamelCase($string){
$string = str_replace(’-’, ’ ', $string);
$string = ucwords(strtolower($string));
return $string;
}
L’inconvénient de cette fonction est que, si je comprends bien cela enlève le « - » (qui me semble nécessaire si c’est vraiment un nom composé mais à priori il suffit de supprimer la ligne du str_replace) et aussi que ça met une majuscule au « de » des noms à particules. Je n’ai pas la solution en PHP mais j’avais fait ça en javascript, je sais pas comme ça si c’est adaptable en PHP (et quand je me relis il faudrait que je replonge dans les regexp pour me souvenir de tout …):
var thenom2 = thenom.toLowerCase().replace(/(^(?!de\b)\b\w{1})|([\s-]+(?!de\b)\b\w{1})/g, letter => letter.toUpperCase());
Il me semble que ça marche pas mal … si des fois ça ouvre une piste pour vous.
Pierre
Oui, il est exact que la solution PHP n’est pas parfaite avec les inconvénients cités que je confirme.
Je vais essayer avec cette solution JavaScript.