Probleme avec les expressions regulieres - PHP - Programmation
Marsh Posté le 16-10-2005 à 22:48:10
La fonction pour faire ça c'est preg_match/preg_match_all, à part ça c'est de la regexp assez simple a priori, si tes chaînes ont toujours la même tronche.
Marsh Posté le 16-10-2005 à 23:30:49
ya quelquechose que je dois vraiment mal saisir ...
preg_match("`[a-zA-Z0-9 -]{1,}[([][0-9]{1,}/[0-9]{1,}[])]`", $chaine1,$tab1);
donc.. une chaine alphanum.. avec des " " ou des "-" .. suivit d'un "(" ou d'un "[" puis 1 ou plus chiffre , un "/" etc....
seulement il me renvoit bien ma chaine... mais dans au premier indice de mon tableau.. je ne vois pas trop comment lui dire de mettre chaque exp a des indices differents
PS: les chaines n'ont pas toujours la même tronche.. mais si deja j'arrive a le faire pour cette forme la..
Marsh Posté le 16-10-2005 à 23:42:44
Tout ce qui est entre parenthèses sera récupéré dans ton $tab1, à partir de $tab1[1].
Par ex. #([0-9]*)//([0-9]*)# sur "98941//2134" récupèrera les deux nombres séparément.
Marsh Posté le 17-10-2005 à 00:18:42
en effet.. apres ajout des parentheses.. tout est mis au bon endroit
voila un probleme de reglé! un grand merci
Maintenant il est vrai que de facon globale ma chaine peu etre sous differentes formes .... mais je devrais pouvoir m'en sortir! encore merci pour les reponses a cette heure
Bye
folkN
Marsh Posté le 17-10-2005 à 00:43:25
j'en profite pour poser une autre petite question...
est-il possible que s'il ne trouve pas une expression il remplisse quand même le $tab de la même maniere que s'il avait bien trouvé l'expression?
ca me permet de garder les mêmes indices pour les mêmes informations dans le $tab
alors? reve ou realité?
BouBye
folkN
Marsh Posté le 17-10-2005 à 09:01:26
T'as un exemple ?
Marsh Posté le 17-10-2005 à 19:01:46
on va dire que de facon generale ma chaine a cette forme. ..
"texte1 [xxx1/xxx2] texte2"
sachant que texte1 et/ou texte2 peuvent ne pas etre present >>
"texte1 [xxx1/xxx2]"
"[xxx1/xxx2] texte2"
"texte1 [xxx1/xxx2] texte2"
et j'aimerais donc savoir si a chaque fois je peux trouver dans mon $tab >>
$tab[1]= texte1 ou ' '
$tab[2]= xxx1
$tab[3]= xxx2
$tab[4]= texte2 ou ' '
Marsh Posté le 17-10-2005 à 19:52:41
Eh ben suffit que ton masque soit en * au lieu d'être en +, histoire qu'il puisse catcher le vide.
edit: essaie #(.*?) ?\[([^/]+)/([^\]]+)\] ?(.*)#
Marsh Posté le 17-10-2005 à 20:54:32
outch il va me falloir quelque temps pour analyser ton masque mais il marche tres bien!
encore merci pour ton aide sielfried si j'ai d'autre probleme sur les regexp je sais qui venir embetter maintenant
Marsh Posté le 17-10-2005 à 21:52:10
Embête google, c'est mieux.
Je recommande http://www.regular-expressions.info/
Marsh Posté le 16-10-2005 à 22:01:51
Bonjoir !
Voila j'ai besoin dans un script de comparer des chaines.. et d'y trouver des similitudes....
exemple ...
$chaine1 = "Bonjour tout le monde [16/10]"
$chaine2 = "Bonjour tout le monde [17/10]"
j'aimerais pvr comparer ces deux chaines... et biensur detecter le fait que le debut soit le même hein qu'enregistrer les chiffres entre [] (séparement ...)
l'idéal pour moi serait de me retrouver avec deux tableaux
$tab1[1] ="Bonjour..."
$tab1[2] ="16."
$tab1[3] ="10"
$tab2[1] ="Bonjour..."
$tab2[2] ="17"
$tab3[3] ="10"
j'ai lu pas mal de site.. (regexp.com que je vous conseil) mais je n'ai rien trouvé qui aille dans ce sens
Si quelqu'un pouvait m'aider.. (sans forcement me donner la soluce) , ca serait avec grand plaisir
merci d'avance
folkN
Message édité par folkN2 le 16-10-2005 à 22:20:40