Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1533 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Expressions régulières... (TOUJOURS DANS LE CACA Rhaaa !!)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Expressions régulières... (TOUJOURS DANS LE CACA Rhaaa !!)

n°288689
Hermes le ​Messager
Breton Quiétiste
Posté le 17-01-2003 à 21:53:27  profilanswer
 

Je voudrais pouvoir trouver les occurences de sous-chaines présentes dans ma chaine, telles que celles-ci soient comprises entre les caractères [ et ] (quoi qu'il puisse y avoir entre [ et ]. ;)
 
Voilà où j'en suis :
 
$chaine = "coucou c'est moi [imgyoup là boum] . et oui";
$test = split("[.]", $chaine);
 
echo $test[0];
 
et ben ça marche po. Il me renvoie le tout, le saligaud. Pourtant logiquement, il devrait me renvoyer une sous-chaine délimitée par les [ et ] ... grrrr... (j'ai aussi évidemment essayé split("\[.\]", $chaine)...
 
Help, je désepère... (pourtant il me semblait bien avoir compris les exp régulières... :D )


Message édité par Hermes le Messager le 18-01-2003 à 00:35:31
mood
Publicité
Posté le 17-01-2003 à 21:53:27  profilanswer
 

n°288692
wouatouwou​atou
Posté le 17-01-2003 à 22:22:54  profilanswer
 

regarde du cote de ereg()... je crois kil te fait ton truc...

n°288694
Hermes le ​Messager
Breton Quiétiste
Posté le 17-01-2003 à 22:24:24  profilanswer
 

J'ai déjà regardé, ça marche pas. Le problème vient de l'expression régulière, pas de la fonction utilisée pour trouver ces expressions. Mais merci de me répondre.
 
$chaine = "coucou c'est moi [imgyoup là boum] . et oui";  
$res = ereg("[.]", $chaine, $test);  
echo $test[0];  
 
ne marche pas...


Message édité par Hermes le Messager le 17-01-2003 à 22:27:28
n°288708
wouatouwou​atou
Posté le 17-01-2003 à 22:58:29  profilanswer
 

les crochets ont une signification particulière dans les exp. reg.
met des \ devant..
du genre : '.*\[.*\].*'

n°288712
Hermes le ​Messager
Breton Quiétiste
Posté le 17-01-2003 à 23:04:46  profilanswer
 

Merci, tu m'as mis sur la voie. c'est le * que j'avais oublié. :D
 
La réponse était :
 
tandannnnnnnnnnnn ...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
$res = ereg('\[.*\]', $chaine, $test);
 
Thanks  :jap:

n°288738
wouatouwou​atou
Posté le 18-01-2003 à 00:13:18  profilanswer
 

de rien ...
mais ca fait tjrs plaisir :D...

n°288739
Hermes le ​Messager
Breton Quiétiste
Posté le 18-01-2003 à 00:33:38  profilanswer
 

Code :
  1. Rhaaaaaaaaaa !!! Je viens de me rendre compte que je suis toujours dans la merde.
  2. Regardes !!
  3. $chaine = "coucou c'est moi [IMG:photo02:L:N:120] et oui [IMG:photo06:L:N:10] et voilà";
  4. $res = ereg('\[IMG.*\]', $chaine, $test);
  5. echo $test[0],"<br>",$test[1];
  6. Cela me donne [IMG:photo02:L:N:120] et oui [IMG:photo06:L:N:10] !! pour $test[0] au lieu de :
  7. [IMG:photo02:L:N:120] pour $test[0] et [IMG:photo06:L:N:10] pour $test[1].
  8. Rhaaaaaaaa !!!
  9. Help !!


 
Je vais quand même pas devoir faire un for... et réinventer la roue  :sweat:


Message édité par Hermes le Messager le 18-01-2003 à 00:37:03
n°288741
wouatouwou​atou
Posté le 18-01-2003 à 00:57:57  profilanswer
 

hehe... tu me diras que c logique d'apres l'exp. reg. donné :p
 
le .* prend n'importe quel caractère en compte donc le crochet aussi :(
 
Essaie ca, mais c pas sur que ca marche :D :
 

Code :
  1. "\[IMG[^\]]*\]"


 
p.s: le [^\]] permet d'exclure le crochet du jeu de caracteres

n°288749
Hermes le ​Messager
Breton Quiétiste
Posté le 18-01-2003 à 01:17:25  profilanswer
 

Marche pas  :cry:  :cry:  
 
J'ai bien l'impression que je suis bon pour faire une fonction du feu de dieu.  :sweat:

n°288765
wouatouwou​atou
Posté le 18-01-2003 à 01:55:02  profilanswer
 

voilà un début de réponse :)
 

Code :
  1. $chaine = "coucou c'est moi [IMG:p hoto02:L:N:120] et oui [IMG:p hoto06:L:N:10] et voilà";
  2.   $res = ereg('\[IMG[^]]*\]', $chaine, $test);
  3.   echo count($test),"<br>";
  4.   foreach ( $test as $elt )
  5.     echo $elt,"<br>";


 
mais ca ne donne que la première occurence...
 
pour toutes les avoir il faut le mettre entre parentheses et rajouter une etoile :

Code :
  1. $chaine = "coucou c'est moi [IMG:p hoto02:L:N:120] et oui [IMG:p hoto06:L:N:10] et voilà";
  2.   $res = ereg('(\[IMG[^]]*\])*', $chaine, $test);
  3.   echo count($test),"<br>";
  4.   foreach ( $test as $elt )
  5.     echo $elt,"<br>";


 

mood
Publicité
Posté le 18-01-2003 à 01:55:02  profilanswer
 

n°288770
Hermes le ​Messager
Breton Quiétiste
Posté le 18-01-2003 à 02:07:17  profilanswer
 

Je te remercie bcp de tes efforts. Le plus drôle, c'est que je suis parvenu au même résultat, mais malheureusement, c'est toujours pas ça.
 
En effet, il renvoie 2 FOIS la même occurence. Autrement dit :
 
2 fois

Code :
  1. [IMG:photo02:L:N:120]

au lieu de :
 

Code :
  1. [IMG:photo02:L:N:120]
  2. et
  3. [IMG:photo06:L:N:10]


 
 :cry:  :cry:  :heink:  Je commence à pêter un plomb avec cette histoire.

n°288782
Hermes le ​Messager
Breton Quiétiste
Posté le 18-01-2003 à 03:21:48  profilanswer
 

Bon, j'ai trouvé une solution, c'est de faire l'inverse et de ne retenir que ce que je ne veux pas, puis de le soustraire de la chaine globale avant de séparer les éléments restant que je veux :
 

Code :
  1. $chaine_tbl = preg_split('(\[IMG[^]]*\]*)',$chaine);
  2.     $cpt_split = count($chaine_tbl);
  3.     for ($i = 0; $i <= $cpt_split-1; $i++)
  4.     {
  5.      $chaine = str_replace($chaine_tbl[$i],"",$chaine);
  6.     }
  7.     $tableau_donnees = explode('[IMG:',$chaine);
  8.     $cpt_donnees = count($tableau_donnees);
  9.     for ($j = 1; $j <= $cpt_donnees-1; $j++)
  10.     {
  11.    
  12.      echo $tableau_donnees[$j],"<br>";
  13.     }


 
Mais bon, c lourd...  :heink:  
 
Ya vraiment pas plus simple ??

n°288794
wouatouwou​atou
Posté le 18-01-2003 à 04:41:02  profilanswer
 

avec cette maniere.. ta pa a mettre l'etoile ;)
prend l'exp reg simple :

Code :
  1. '\[IMG[^]]*\]'

n°288820
Hermes le ​Messager
Breton Quiétiste
Posté le 18-01-2003 à 11:46:49  profilanswer
 

ouip, j'ai testé.  :jap:  
 
Mais bon, je trouve incroyable qu'on ne puisse pas faire plus simple.  :heink:


Message édité par Hermes le Messager le 18-01-2003 à 11:47:06
n°288893
Hermes le ​Messager
Breton Quiétiste
Posté le 18-01-2003 à 13:29:54  profilanswer
 

Bon, bien que j'arrive à faire ce que je voulais, c'est trop lourd je trouve et donc, j'opte pour une autre solution (générer les images dans une banque pour que celles-ci soient utilisables par la personne directement).
 
Si qqu trouve quand même la soution avec les exp reg, qu'il le dise, ça pourra toujours servir dans d'autres situations.
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Expressions régulières... (TOUJOURS DANS LE CACA Rhaaa !!)

 

Sujets relatifs
[php] Expressions régulière prendre n'importe quoi[Perl] Y a-t-il un dieu des expressions régulières dans la salle?
Expressions régulièresExpression régulières
Crée des liens à partir de mots dans un texte (expressions régulières)Expressions regulieres [je débarque]
Plus de sujets relatifs à : Expressions régulières... (TOUJOURS DANS LE CACA Rhaaa !!)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR