Conversion de strings

Signaler
Messages postés
11
Date d'inscription
jeudi 4 octobre 2007
Statut
Membre
Dernière intervention
6 mars 2008
-
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
-
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

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

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
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
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 ^^
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
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]);
?>
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
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
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
Ah zut, Malalam a réfléchi plus vite que moi ^^
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Héhé, les admins de CS ont des supers pouvoirs qui leur permettent de répondre plus vite... ;-) (nan c'est pas vrai hein!)
Messages postés
11
Date d'inscription
jeudi 4 octobre 2007
Statut
Membre
Dernière intervention
6 mars 2008

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
Messages postés
11
Date d'inscription
jeudi 4 octobre 2007
Statut
Membre
Dernière intervention
6 mars 2008

je me marre !

la joute verbale AMICALE.

désolé !
Messages postés
11
Date d'inscription
jeudi 4 octobre 2007
Statut
Membre
Dernière intervention
6 mars 2008

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
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
re,
tu veux faire quoi au juste ? Mettre les apostrophes? Et tes mots sont alors...? $a "C'" ou $a "C'Est" ?
Messages postés
11
Date d'inscription
jeudi 4 octobre 2007
Statut
Membre
Dernière intervention
6 mars 2008

$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
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
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.
Messages postés
11
Date d'inscription
jeudi 4 octobre 2007
Statut
Membre
Dernière intervention
6 mars 2008

"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
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
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.