[script] Extraire d'une chaîne les mots commençant par une majuscule

WRInaute discret
Salut,

Je cherche le moyen d'extraire d'une chaîne tous les mots commençant par une majuscule. :?:

Exemple :
$chaine = "UnscriptSuperCool";
Ce que souhaites avoir : "Unscript Super Cool";

Exemple 2 :
$chaine = "BlablablablaBlaBlablaBla";
Ce que souhaites avoir : "Blablablabla Bla Blabla Bla";

Lorsqu'une lettre est en majuscule, cela correspond au début d'un mot jusqu'à la prochaine majuscule (non comprise).

Merci pour votre aide,

Stéphane.
 
WRInaute discret
Salut,

Ton premier lien est une piste. Difficile à reproduire en Regex (la solution se trouve là), avec quelque chose comme ça :

$chaine = "BlablaBlaBlablablablaBla";
if (preg_match('~[[:upper:]]~', $chaine, $m)) {
.....
}
 
WRInaute discret
J'y suis presque :

$chaine = "BlablaBloublaBla";

if (preg_match('#[A-Z][a-z]*#', $chaine, $m)) {
echo " ".$m[0];
echo " ".$m[1];
echo " ".$m[2];
}

Mais ça ne m'affiche que "Blabla", il me manque "Bloubla" et "Bla".

echo " ".$m[1]; et echo " ".$m[2]; génèrent une erreur, c'est à dire que mon Regex ne fait ressortir qu'une seule occurence hors que je souhaites les obtenir toutes.
 
WRInaute discret
C'est bon j'ai trouvé la solution :

if (preg_match_all('#[A-Z][a-z]*#', $chaine, $m)) {
...
}

preg_match_all au lieu de preg_match forcément ...
 
Discussions similaires
Haut