Problème de fputs + preg_replace [Débutant] - problème résolu tout seul :)

Petit nouveau ! | 1 Messages

02 avr. 2008, 01:43

Désolé du dérangement, j'ai créer une seconde boucle pour le fputs et ca marche.

Voilà, j'ai quelques bases, notions de progr (python, as2) car je suis en dut (et jamais eu le reflexe de m'y mettre tout seul :(), mais là je cherche à réaliser un petit script php (sachant que j'y connais quasiment rien) pour faire une galerie flash (déjà réalisée) en dynamique (sans bdd).

voici mon code :

Code : Tout sélectionner

<?php $fp = fopen ("listage.txt", "r+"); fseek ($fp, 0); $cpt=0; $img=-1; foreach(glob("{*.jpg}", GLOB_BRACE) as $val) { $cpt++; $img++; echo "&image".$img."="."<".">".$val."&"."<br />"; fputs ($fp, "&image".$img."=<".">".$val."&".("\r\n")); } echo "&total"."=".$cpt."&"; fputs ($fp, "&total"."=".$cpt."&"); fclose ($fp); echo "<br />"."<br />"."<hr />"."<br />"; $fp = fopen ("listage.txt", "r+"); fseek ($fp, 0); for ($i = 0; $i <= $cpt; $i++) { ${"var".$i} = fgets($fp, 128); $patterns[0] = '/<(.*)>/'; $replacements[0] = ""; echo preg_replace($patterns, $replacements, ${"var".$i})."<br />"; fputs ($fp, preg_replace($patterns, $replacements, ${"var".$i}).("\r\n")); print($i); } fclose ($fp); ?>
En gros, je liste des *.jpg dans un repertoire, et je les ecris dans un *.txt de manière à déclarer des variables pour flash (égales au nb de champs listés) et afin ce que flash puisse les lires et arrêter la lecture (grâce aux &). Jusqu'à là ca marche, les images sont loadées en movieclip dans la galerie grâce à une petite "moulinette" à l'intérieur ;).

voici le résultat de la première partie du code (si l'on enlève les "<".">"):

&image0=image0.jpg&
&image1=image1.jpg&
&image2=image10.jpg&
&image3=image11.jpg&
&image4=image12.jpg&
&image5=image13.jpg&
&image6=image14.jpg&
&image7=image15.jpg&
&image8=image16.jpg&
&image9=image17.jpg&
&image10=image18.jpg&
&image11=image19.jpg&
&image12=image2.jpg&
&image13=image3.jpg&
&image14=image4.jpg&
&image15=image5.jpg&
&image16=image6.jpg&
&image17=image7.jpg&
&image18=image8.jpg&
&image19=image9.jpg&
&total=20&



Sauf que je load des miniatures et grandes dans des répertoires frères dont les noms sont les mêmes (d'où l'interêt de récupérer le nom de l'image quand je load jusqu'à chacun des répertoires et que je me sert ensuite du nom de la variable i en rapport avec le nombre de l'image i.

Le problème est que quand j'affiche le swf dans une page html (site pour projet de fin d'année...), ce dernier prend les attributs de la page et je dois changer le chemin relatif pour accéder au fichier txt ou j'ai ecrit la liste des variables que flash doit lire.

Je leur rajoute un <> entre var=<>image afin de pouvoir effacer le contenu de ces dernier (ceux ci nclus), contenu étant le chemin relatif entre le page et le fichier txt (afin de ne pas avoir quelque chose comme :

&image19=../../ressources/galerie/grandes/image9.jpg&

mais plutot : &image19=image9.jpg& grâce à preg_replace qui se charge de virer ce qu'il y a ou non entre <> (je met du vide dedant).


Donc, ca marche en fait, mais à moitié, j'ai qu'une valeur sur les deux...,et donc qu'une image sur deux dans la galerie, exemple :

&image0=image0.jpg&
0&image2=image10.jpg&
1&image4=image12.jpg&
2&image6=image14.jpg&
3&image8=image16.jpg&
4&image10=image18.jpg&
5&image12=image2.jpg&
6&image14=image4.jpg&
7&image16=image6.jpg&
8&image18=image8.jpg&
9&total=20&&total=20&
10
11
12
13
14
15
16
17
18
19
20

en ayant fait un print($i); pour voir ou cela s'arrêtait vraiment...

en tout cas, le problème vient bien de fputs/preg_replace.

Merci d'avance et désolé si j'ai été pas très compréhensible...