fractionner une chaine de caractères

WRInaute discret
bonjour,

je voudrais savoir quel est la fonction php la mieux adaptée pour fractionner une chaine de caractères en fonction de plusieurs caracteres.

exemple :
je veux fractionner :
"nous sommes le dimanche 22 janvier 2006,il est 14 heures 58"
grace aux mots "le" et "janvier" et obtenir :
$tableau[0]="nous sommes ";
$tableau[1]=" dimanche 22 ";
$tableau[2]=" 2006,il est 14 heures 58";

merci

:)
 
Nouveau WRInaute
atomikado a dit:
bonjour,

je voudrais savoir quel est la fonction php la mieux adaptée pour fractionner une chaine de caractères en fonction de plusieurs caracteres.

exemple :
je veux fractionner :
"nous sommes le dimanche 22 janvier 2006,il est 14 heures 58"
grace aux mots "le" et "janvier" et obtenir :
$tableau[0]="nous sommes ";
$tableau[1]=" dimanche 22 ";
$tableau[2]=" 2006,il est 14 heures 58";

Je peux t'aider en te donnant une expression régulière à utiliser.
hormis la date et l'heure il y a d'autres choses qui sont variables dans ta phrase ?
Par exemple, je vois que tu mets "nous sommes " dans une variable, mais si c'est fixe pourquoi parser la ligne pour récupérer ce segment ?

Tes nombres sont toujours sur 2 chiffres ?
tu auras 8 heures 7 ou 08 heures 07 ?

Tu peux aussi utiliser la fonction split (attention syntaxe peut être fausse, je ne fais pas de PHP, mais si ton PHP est PCRE, Perl Compatible Regular Expression, la regex sera bonne)
Code:
$tableau = split('le|janvier|février|mars|avril|mai|juin|juillet|aout|septembre|octobre|novembre|décembre', $date);

David "Sniper" Rigaudiere
 
Nouveau WRInaute
atomikado a dit:
j'ai pris cette phrase au hasard, (peut être pas le meilleur exemple) mais ca peut être n'importe quelle phrase...

Le parsing des données dépend fortement des données, il n'y a pas de solution miracle.
Mieux tu connais le format des données et plus ton "fractionnement" sera efficace.
Si la "coupure" se fait avec les mêmes termes split() est souvent la solution, sinon une expression régulière avec une commande match() ou assimilée aide souvent.
Si les champs sont fixes pack()/unpack() seront plus efficaces (je ne sais pas si PHP a l'équivalent, je code en Perl).

J'ai édité mon premier post pour ajouter un exemple avec split().
Il te faudra aussi regarder une introduction aux expressions régulières si tu ne connais pas.

David "Sniper" Rigaudiere
 
WRInaute discret
Tu peux aussi utiliser explode:
$str=explode(" le ","nous sommes le dimanche 22 janvier 2006,il est 14 heures 58");
$tableau[0]=$str[0];
$str=explode(",",$str[1]);
$tableau[1]=$str[0];
$tableau[2]=$str[1];
 
Discussions similaires
Haut