eregi_replace = Relou !!!

eregi_replace = Relou !!! - PHP - Programmation

Marsh Posté le 13-11-2002 à 00:30:21    

Salut à tous,
 
Bah voilà, j'ai bien avancé sur mon code mais j'ai un gros problème que je n'arrive pas à résoudre...
 
Voilà un bout de code qui marche parfaitement :
 

Code :
  1. $string=eregi_replace("\\[image\\]([^\\[]*)\\[/image\\]", "<img src=\"\\1\" border=1 width=160 height=120 hspace=10 vspace=10 align=right>", $string);


 
Qu'est ce que çà fait ??
 

Code :
  1. Ca remplace [image]1[/image] provenant d'un formulaire par :
  2. <img src="1 border=1 width=160 height=120 hspace=10 vspace=10>


 
Ma question ??
Y'a t'il un moyen de décomposer les taches faites par eregi_replace... Le 1 entre les balises est en fait un ID d'image situé dans une table que j'aimerais interroger pour avoir : le nom de l'image et son alignement. Le problème est que je ne peux pas faire de requête pendant le travail de la fonction eregi_replace... Ce que je recherche : detecter la première balise image, regarder son contenu puis récupérer l'ID, requerir le nom du fichier et l'alignement dans la base, remplacer les données et enfin passer à la balise suivante.
 
 
J'ai essyé d'être clair, excusez-moi pour la longueur !!!
J'ai aucune idée pour la méthode à utiliser !
Toutes infos bienvenues !!
Merci !!

Reply

Marsh Posté le 13-11-2002 à 00:30:21   

Reply

Marsh Posté le 13-11-2002 à 00:59:55    

utilise preg_replace()

Code :
  1. $text= preg_replace("/expression/Use", "ma_fonction('\\1')", $text);


 
je suis pas sûr pour les "" autour de la fonction


Message édité par ethernal le 13-11-2002 à 01:02:09

---------------
...oups kernel error...
Reply

Marsh Posté le 13-11-2002 à 03:01:54    

Merci pour ton aide, mais ca ne marche ni avec les guillemets ni sans... ou c'est aussi possible que je sois trop naze !!
 
J'ai quand même trouvé une solution alternative pour ceux que çà intéresserait :
 

Code :
  1. function macro_img($str)
  2. {
  3. $decoupe=split("\[/img\]",$str,40);
  4. /* on recupere
  5. * decoupe[0] => "[img]1"
  6. */
  7. $nbsub=count($decoupe); // ici -> 1 seul
  8. $i=0;
  9. //pour chaque endroit où on a découpé
  10. while($i<$nbsub)
  11. {
  12. $temp=(spliti("\[img\]",$decoupe[$i],40));
  13. //on ne prend que ce qu'il y a après la balise [img], il ne reste que "1"
  14. $id_recup=$temp[1];
  15. // on créer la requete SQL et on l'envoie  
  16. $sql = "SELECT * FROM photos where id='".$id_recup."'";
  17. // on envoie la requete  
  18. $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
  19. $data = mysql_fetch_array($req);
  20. // On définit les parametres de remplacement
  21. $recherche= "\[img\]" . $id_recup . "\[/img\]";
  22. $remplace="<IMG src='photos/thumb/".$data['nom']."' width=160 height=120 hspace=10 vspace=10 border=1 align=".$data['align'].">";
  23. $str=eregi_replace($recherche , $remplace, $str);
  24. $i++;
  25. }
  26. return $str;
  27. }


 
Voili voilou,
C'était un peu complexe pour un truc aussi con !!
A+++ tous

Reply

Sujets relatifs:

Leave a Replay

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