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


noisycity
WRInaute discret
WRInaute discret
 
Messages: 65
Inscription: 6 Jan 2005

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

Message le Ven Oct 09, 2009 20:56

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.


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8575
Inscription: 23 Nov 2005

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

Message le Ven Oct 09, 2009 21:02

Bonsoir,

Regardes la solution proposée ici par pom (pour de l'actionscript mais l'algo reste valable) : http://www.flashxpress.net/forum/showthread.php?t=53565

Sachant que pour connaître le code ASCII d'un caractère en PHP tu as ord(), et que pour parcourir un chaîne de caractère, caractères par caractère, en PHP tu as ce billet http://www.commentcamarche.net/forum/affich-10315734-php-parcourir-une ... -caractere


noisycity
WRInaute discret
WRInaute discret
 
Messages: 65
Inscription: 6 Jan 2005

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

Message le Ven Oct 09, 2009 22:03

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)) {
.....
}


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8575
Inscription: 23 Nov 2005

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

Message le Ven Oct 09, 2009 22:05

Justement je ne serais pas parti sur une Regexp, mais sur la piste suivante, celle des codes ASCII des caractères.


noisycity
WRInaute discret
WRInaute discret
 
Messages: 65
Inscription: 6 Jan 2005

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

Message le Ven Oct 09, 2009 23:56

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.


noisycity
WRInaute discret
WRInaute discret
 
Messages: 65
Inscription: 6 Jan 2005

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

Message le Sam Oct 10, 2009 0:01

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 ...


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité