Probleme avec les expressions regulieres

Probleme avec les expressions regulieres - PHP - Programmation

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
Reply

Marsh Posté le 16-10-2005 à 22:01:51   

Reply

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


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

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

Reply

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.


Message édité par sielfried le 16-10-2005 à 23:57:22

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

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

Reply

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

Reply

Marsh Posté le 17-10-2005 à 09:01:26    

Reply

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

Reply

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 #(.*?) ?\[([^/]+)/([^\]]+)\] ?(.*)#


Message édité par sielfried le 17-10-2005 à 19:53:59

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

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 :)

Reply

Marsh Posté le 17-10-2005 à 20:54:32   

Reply

Marsh Posté le 17-10-2005 à 21:52:10    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed