[RegExp] Normalisation

Eléphanteau du PHP | 19 Messages

28 sept. 2006, 01:07

Bonjour,
je cherche le moyen de normaliser une chaine caracteres quelconque suivant ces regles :
+ seulement des minuscules, des chiffres ou des espaces
+ les premieres lettres de chaque mot en majuscule

La ligne : $string = preg_replace('![^a-z0-9]!','',strtolower($string)); supprime les caracteres alors que je voudrais les 'transformer' : par exemple les é et è en e...

De plus, il y a-t-il une solution pour remplacer toutes les premiere lettres par leur majuscule et ne rien faire s'il s'agit d'un chiffre.

Je vais vous donner un exemple afin de bien vous reprensenter ce que je veux faire :
il été_10.p'tits-navires => Il Ete 10 Ptits Navires

Merci de votre aide

Mammouth du PHP | 19672 Messages

28 sept. 2006, 07:58

Pour la premiere lettre en majuscule, utilise ucfirst() : tu peux donc faire :
<?php
//...
$chaine = ucfirst(strtolower($chaine));
//...
?>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 505 Messages

28 sept. 2006, 09:13

regle 1, effectivement, regexp,

converti en minuscule et suprime tout ce qui n'est pas alpha numérique ou espacement (space tabulation )
$string = preg_replace('/[^\w\s]/','',strtolower($string));
ensuite, pour la première lettre de chaque mot en majuscule.
$string = ucwords($string) 

Eléphanteau du PHP | 19 Messages

28 sept. 2006, 10:59

Merci beaucoup de votre aide ^^