Conversion de strings

NialaS Messages postés 11 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 6 mars 2008 - 1 mars 2008 à 10:18
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 2 mars 2008 à 11:38
Bonjour à toutes et à tous.
Je suis *très* paresseux... et je n'ai pas le courage de chercher seul...

soit :
$a = "CeciEstUnExemple;
je voudrais obtenir :
$b ="Ceci";
$c = "Est";
$d = "Un";
$e = "Exemple";

Si quelqu'un peut m'aider... Grand merci par avance !

Alain

15 réponses

Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
1 mars 2008 à 10:24
Hello split( ) php.net
NialaS Messages postés 11 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 6 mars 2008
1 mars 2008 à 10:45
Evangun,

Merci pour l'info et l'adresse mais ... il est écrit :

// Les délimiteurs peuvent être des tirets, points ou slash

et moi, je souhaiterais repérer et utiliser les majuscules comme délimiteurs *inclus* dans les substrings.

Alain
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
1 mars 2008 à 11:01
Euh non, ça peut être autre chose, il suffit simplement que tu fasses un pattern qui inclue toutes les majuscules.
Quelque chose du genre split ou $array = preg_split('[A-Z]', $string);
Par contre la prochaine fois que tu te sens paresseux, prends des vitamines et cherche par toi-même, c'est efficace aussi ^^
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
1 mars 2008 à 11:03
Hello,

les délimiteurs ne sont pas ce que tu crois. Il faut te renseigner sur les expressions régulières.
Néanmoins, si je reste dans les expressions régulières comme le suggère Evangun, je pense que ce serait plus simple avec preg_match_all() :
<?php
$sString = 'CeciEstUnExemple';
preg_match_all('`([A-Z]+[^A-Z]*)`', $sString, $aWords);
print_r($aWords[0]);
?>

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
1 mars 2008 à 11:04
Quoique je me dis qu'il va virer les majuscules de la chaîne du coup... attend je réfléchis 2 minutes de plus :p
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
1 mars 2008 à 11:04
Ah zut, Malalam a réfléchi plus vite que moi ^^
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
1 mars 2008 à 11:11
Héhé, les admins de CS ont des supers pouvoirs qui leur permettent de répondre plus vite... ;-) (nan c'est pas vrai hein!)
NialaS Messages postés 11 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 6 mars 2008
1 mars 2008 à 18:30
Merci à tous deux !

Pour la solution et la joute verbale animale !

Désolé du retard de réponse mais ... je me reposais ! :-))

"Par contre la prochaine fois que tu te sens paresseux, prends des vitamines et cherche par toi-même, c'est efficace aussi ^^"

Des vitamines, certes mais c'est moins sympa que de vous lire !

J'essaie la proposition de malalam (dont j'apprécie aussi les 'classes') dès demain... après mon réveil ...

Alain
NialaS Messages postés 11 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 6 mars 2008
1 mars 2008 à 18:33
je me marre !

la joute verbale AMICALE.

désolé !
NialaS Messages postés 11 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 6 mars 2008
1 mars 2008 à 22:11
Suite (et fin)

GRAND merci. Tout fonctionne dans les "cas basiques".

Une question :
si $a = CEstDeLArt;

Avez-vous une idée pour résoudre le problème associé aux 'apostrophes" ?

Bonne nuit

Alain
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
1 mars 2008 à 22:39
re,
tu veux faire quoi au juste ? Mettre les apostrophes? Et tes mots sont alors...? $a "C'" ou $a "C'Est" ?
NialaS Messages postés 11 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 6 mars 2008
2 mars 2008 à 07:13
$a = "C'Est";

Le contexte :
je dispose de dossiers contenant des fichier du style "FR_CEstUnFilm(JeanGabin2000).avi;
Je veux éviter de créer une base mySQL pour arriver à présenter correctement les informations titre-acteur-date. Donc je veux "découper" le nom du fichier avant de l'envoyer au navigateur.

La solution attendue sera donc :

$aa = "C'est";

Bon dimanche matin

Alain
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
2 mars 2008 à 08:59
Hello,

t'es un lève-tôt toi le dimanche matin (à moins que la suisse ait un décalage horaire avec la France que je ne soupçonnais pas!).
Ca encore, c'est faisable avec des expressions régulières : d'abord tu insères les apostrophes (preg_replace) avec une PCRE du genre...
preg_replace("`([A-Z]{1})([A-Z]{1})`", '$1\'$2', $sChaine); (à tester hein, j'ai pas essayé)
puis tu découpes avec preg_match_all() en modifiant la PCRE d'hier : je découpe sur les majuscules OU sur une majuscules suivie d'une apostrophe suivie d'une majuscule, avec priorité à ce dernier motif.
Là, je ne te la sors pas parce que comme ça, à brûle pourpoint, je ne sais pas trop comment l'écrire, il faut tester.

Mais...tu comptes ajouter d'autres infos comme ça ? Et tu as déjà extrait la langue, l'acteur et la date...? Parce que sinon, tu gagnerais peut-être à changer de méthode : un fichier xml descriptif dans le dossier d'un film serait plus simple. Et tu pourrais alors facilement ajouter d'autres infos par la suite.
NialaS Messages postés 11 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 6 mars 2008
2 mars 2008 à 11:14
"tu gagnerais peut-être à changer de méthode"

Après avoir envoyé le message "matinal", je suis retourné au lit (:-)), un devoir m'y appelait. J'ai aussi pris le temps de réfléchir et je ne crois pas avoir adopter la bonne méthode.
Je vais utiliser ton aide dans un autre cas de figure (noms de fichier en anglais, donc pas de problème d'accentuation) et créer la table mySQL que je voulais éviter (problème de maintenance, galère...).

Je ne veux pas créer "un dossier par film" donc l'idée "xml" est écartée.

Encore une fois, sincèrement, merci pour ton aide et bravo pour ce site pro, géré par un pro (qui ne semble pas dormir souvent...)

Alain
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
2 mars 2008 à 11:38
Sans créer un dossier par film, il est très facile d'utiliser xml  en lieu et place d'une bdd pour ça.
Je suis aussi partisan de l'allègement maximal de la bdd, quand c'est opportun.
Mais si tu as d'autres infos à aller chercher en bdd en rapport à un film, évidemment...autant tout mettre en base et tout récupérer d'un coup.
Rejoignez-nous