pb avec ereg

pb avec ereg - PHP - Programmation

Marsh Posté le 12-08-2004 à 00:14:47    

salut,
je veux récupéré ce qui se trouve entre mes balise [IMG][/IMG] masi j'y arrive pas. Je pense que c'est un pb de / mais je ne sais pas ou les mettre.
SI vous avez une bonne doc sur les expressions régulieres je suis ok

Code :
  1. $image=ereg("[IMG](.*)[\IMG]",$msg,$lol);


marci ++

Reply

Marsh Posté le 12-08-2004 à 00:14:47   

Reply

Marsh Posté le 12-08-2004 à 00:30:38    

alors deja fo faire  
$image=ereg("^[IMG](.*)[\IMG]$",$msg,$lol);
sinon
 
http://www.asp-php.net/tutorial/asp-php/regexp.php

Reply

Marsh Posté le 12-08-2004 à 00:34:30    

$image=ereg("^\[(IMG)\](.+)\[.(IMG)\]$",$msg,$lol);
echo $lol[2];
mais ca pose probleme car j utilise . pour signaler le \ ... si quelqu'un sait comment on fait?
 :bounce:  :bounce:  :bounce:


Message édité par lunarnet76 le 12-08-2004 à 00:41:20
Reply

Marsh Posté le 12-08-2004 à 00:54:59    

merci,
je vais voir le lien
++

Reply

Marsh Posté le 12-08-2004 à 11:44:34    

j'ai éssayé ta solution mais ca ne marche pas
+

Reply

Marsh Posté le 12-08-2004 à 12:01:23    

Faut échapper les crochets vu que ça indique un intervalle dans les expressions rationnelles, t'as aussi inversé ton / par rapport à la question :

Code :
  1. $msg = "blabla blabla http://ici.com/img.jpg blabla.";
  2. $image = ereg("\[IMG\](.*)\[/IMG\]",$msg , $lol);
  3. print_r ($lol);
  4. // affiche :
  5. Array (
  6. [0] => http://ici.com/img.jpg
  7. [1] => http://ici.com/img.jpg
  8. )


 
mettre ^ et $ indique que tu ne doit trouver qqch QUE si la chaine commence impérativement par [IMG] et fini par [/IMG] ce qui je suppose ne sera pas souvent le cas :)

Reply

Marsh Posté le 12-08-2004 à 12:15:28    

ok, donc j'étais pas si mal parti :)
il faut vraiment que je potasse, ca a l'air puissant ces trucs :o
marci
 
EDIT: en fait j'étais arrivé a ce résultat (visiblement les \ manquante ne génait pas, mais la avec j'ai toujours le meme probleme avec un message de ce type :

Code :
  1. $msg="salut http://ymerejsan.free.fr/dream.JPG toto [IMG]http://ymerejsan.free.fr/dream.JPG[[/IMG]";


on obtient :  

Code :
  1. http://ymerejsan.free.fr/dream.JPG[/IMG] toto [IMG]lol.jpg


désolé de pas avoir été précis


Message édité par $man le 12-08-2004 à 12:19:40
Reply

Marsh Posté le 12-08-2004 à 13:09:56    

Ca vient du fait que '.' mange tout, y compris [/IMG] qui est le fin qu'on voudrait...
il faut donc lui dire de capturer tout SAUF [/IMG], je pensais m'en sortir avec (^\[/IMG\]) mais il veut rien savoir :/
 
Pour en revenir au \ à mon AMHA c'était du bol parce que [IMG] ca veut dire 'un des caractères I ou M ou G' ce qui est presque le cas ici

Reply

Marsh Posté le 12-08-2004 à 13:13:33    

oui je pense aussi que c'est du bol, je vais éssayer de chercher de mon coté :)

Reply

Marsh Posté le 12-08-2004 à 13:23:54    

$a=explode("[/IMG]",$msg);
$t=0;
while(ereg("(.+)\[IMG\](.+)",$a[$t],$lol)){
echo $lol[2]."<br>";
$t++;
}

Reply

Marsh Posté le 12-08-2004 à 13:23:54   

Reply

Marsh Posté le 12-08-2004 à 13:28:29    

gubug a écrit :

mettre ^ et $ indique que tu ne doit trouver qqch QUE si la chaine commence impérativement par [IMG] et fini par [/IMG] ce qui je suppose ne sera pas souvent le cas :)


merci !!! je n'avais pas compris!!! mais ca veut dire que y  a plein de fois ou j'ai abandonné pour rien  :ouch:  
 :bounce:  :bounce:  :bounce:

Reply

Marsh Posté le 12-08-2004 à 14:22:39    

salut,
bon lunarnet76 ton script marche niquel, quand je fais ca :

Code :
  1. $message="salut http://ymerejsan.free.fr/dream.JPG [img]lol.jpg[/img]";
  2. $fin=explode("[/img]",$message);
  3. $i=0;
  4. while(ereg("(.+)\[img\](.+)",$fin[$i],$image))
  5. {
  6. echo $image[2]."<br>";
  7. $i++;
  8. }


j'obtiens ca :

Code :
  1. http://ymerejsan.free.fr/dream.JPG
  2. lol.jpg

-> c'est niquel.
seulement je vais chercher $message dans une base mysql et la ca merde, je comprends pas
mon code :

Code :
  1. function balise($message)
  2. {
  3. $fin=explode("[/img]",$message);
  4. $i=0;
  5. while(ereg("(.+)\[img\](.+)",$fin[$i],$image))
  6. {
  7. echo $image[2]."<br>";
  8. $i++;
  9. }
  10. }
  11. while ($data=mysqli_fetch_array($req,MYSQLI_ASSOC))
  12. {
  13. echo balise($data['message'])."<br>";
  14. }


 
je galere depuis un ptit moment, merci


Message édité par $man le 12-08-2004 à 14:27:14
Reply

Marsh Posté le 12-08-2004 à 14:34:09    

euh while ($data=mysqli_fetch_array($req,MYSQLI_ASSOC))  
c while ($data=mysql_fetch_array($req,MYSQLI_ASSOC)) au cas ou!!!

Reply

Marsh Posté le 12-08-2004 à 14:35:39    

coucou,
heu non sur mon hebergeur c'est bien ca lol, c'est d'ailleurs super relou.
On dirais que le script aime pas ce retrouvé dans le while, mais je saisa aps pourquoi :(
marci++

Reply

Marsh Posté le 12-08-2004 à 14:41:15    


  $table=mysql_query("SELECT * FROM table_menu WHERE id=4" );
  while ($table && $info=mysql_fetch_array($table))
  {  
  $a=explode("[/IMG]",$info['nom']);
  $t=0;
  while(ereg("(.+)\[IMG\](.+)",$a[$t],$lol)){
  echo $lol[2]."<br>";
  $t++;
  }
  }
bon aprés fo ke tu mette ta propre requete dans mysql_query et que tu modifie pour ton hebergeur!!!

Reply

Marsh Posté le 12-08-2004 à 14:56:14    

merci, mais j'ai pas trop le choix de l'hébergement, je vois ca après je fais une pause je suis claqué lol. l'informatique c'est fatiguant :o
++
 
EDIT: a 1ere vu nos 2 requete font la meme chosen mais j'éssaierai quand même


Message édité par $man le 12-08-2004 à 14:58:07
Reply

Marsh Posté le 12-08-2004 à 15:10:14    

re,
bon j'ai regardé un peu et en fait le pb vient pas de mysql mais de la fonction reguliere. en effet s'il n'y a rien devant [img] ca ne marche pas
merci

Reply

Marsh Posté le 12-08-2004 à 16:00:53    

alors c'est :
while(ereg("(.*
au début: + ca demande au moins 1 caractère.

Reply

Marsh Posté le 12-08-2004 à 16:05:09    

ah ok!!! ben on en apprend tous les jours sur cette fonction!!!

Reply

Marsh Posté le 12-08-2004 à 17:35:14    

+1

Reply

Sujets relatifs:

Leave a Replay

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