par
corneliux » 01 août 2013, 12:31
Bonjour à tous,
je suis en train de tenter de réaliser un petit script, mais je bloque sur un problème.
- J'ai un fichier "upload.txt' situé dans un répertoire de mon serveur.
- Je cherche une valeur (dans l'exemple, mon pseudo : corneliux) dans ce fichier. NB : la valeur apparait plusieurs fois dans le fichier.
- Je parviens à trouver cette valeur.
- Mais ce que je veux mettre en variable, ce n'est pas cette ligne, mais la ligne suivante, et ça, je ne sais pas faire.
Voici un extrait du fichier upload que je traite :
Code : Tout sélectionner
</groundspeak:long_description>
<groundspeak:encoded_hints>entonnoir</groundspeak:encoded_hints>
<groundspeak:logs>
<groundspeak:log id="329446625">
<groundspeak:date>2013-07-13T19:00:00Z</groundspeak:date>
<groundspeak:type>Found it</groundspeak:type>
<groundspeak:finder id="5118841">adesio</groundspeak:finder>
<groundspeak:text encoded="False">2 petits tours d église pour reperer la cache et hop
MPLC</groundspeak:text>
</groundspeak:log>
<groundspeak:log id="328375452">
<groundspeak:date>2013-07-05T19:00:00Z</groundspeak:date>
<groundspeak:type>Found it</groundspeak:type>
<groundspeak:finder id="7600084">lupauwiltho</groundspeak:finder>
<groundspeak:text encoded="False">et de 4!!!</groundspeak:text>
</groundspeak:log>
<groundspeak:log id="326162992">
<groundspeak:date>2013-06-30T19:00:00Z</groundspeak:date>
<groundspeak:type>Found it</groundspeak:type>
<groundspeak:finder id="6269532">paulterguest</groundspeak:finder>
<groundspeak:text encoded="False">en route pour l'eglise suivante:) un cache vite trouvé, malgre des voisin un petit peu curieux! merci pour la cache!</groundspeak:text>
</groundspeak:log>
<groundspeak:log id="323823069">
<groundspeak:date>2013-06-21T19:00:00Z</groundspeak:date>
<groundspeak:type>Found it</groundspeak:type>
<groundspeak:finder id="1794567">Luna49</groundspeak:finder>
<groundspeak:text encoded="False">En route vers Laon. Merci pour la cache.</groundspeak:text>
</groundspeak:log>
<groundspeak:log id="322867297">
<groundspeak:date>2013-06-16T19:00:00Z</groundspeak:date>
<groundspeak:type>Found it</groundspeak:type>
<groundspeak:finder id="5589534">Corneliux</groundspeak:finder>
<groundspeak:text encoded="False">Jour de mariage lors du premier passage, je logue tranquillement cette fois ci.</groundspeak:text>
</groundspeak:log>
</groundspeak:logs>
<groundspeak:travelbugs />
</groundspeak:cache>
</wpt>
et voici le code que j'ai pour le moment pour récupérer les données dont j'ai besoin :
Code : Tout sélectionner
/*******************************************************************************************/
//Lecture du fichier et extraction du TITRE et des COORDONNES DE LA CACHE
$i = 0;
$j = 0;
/*Ouverture du fichier en lecture seule*/
//$handle = fopen('fichier.gpx', 'r');
$handle = fopen('tmp/upload.txt', 'r+');
/*Si on a réussi à ouvrir le fichier*/
if ($handle){
/*Tant que l'on est pas à la fin du fichier*/
while (!feof($handle)){
/*On lit la ligne courante*/
$buffer = fgets($handle);
/*On cherche si c'est la ligne des coordonnées de la cache*/
if (preg_match("#<wpt lat=#i", "'.$buffer.'")){
//echo $buffer;
$tab_coord = explode("\"",$buffer); //coord de la cache
// echo "Longitude : ".$tab_coord[1]." Lattitude : ".$tab_coord[3]."<br>";
$tablo_lattitude[$j] = $tab_coord[1];
$tablo_longitude[$j] = $tab_coord[3];
$j++;
}
/*On cherche si c'est la ligne du nom de la cache*/
if (preg_match("#<urlname>#i", "'.$buffer.'")){
eregi("<urlname>(.*)</urlname>",$buffer,$tab_nom); //Nom de la cache
// echo "<strong>".htmlentities($tab_nom[1])."</strong><br>";
$tablo_nom[$i] = htmlentities($tab_nom[1]);
$i++;
}
/*On cherche si c'est la ligne du log du pseudo*/
if (preg_match("#>".$_POST['pseudo']."<#i", "'.$buffer.'")){
C'EST ICI QUE JE GADOUILLE ???????????????????????????????????????????
}
}
/*On ferme le fichier*/
fclose($handle);
}
Comme vous pouvez le voir, la ligne ou il y a mon pseudo ne m'intéresse pas, mais je souhaiterais pouvoir récupérer la ligne suivante afin de récupérer tout mes commentaires qui sont entre les balises "<groundspeak:text encoded="False">" et "</groundspeak:log>".
Quelqu'un peut m'aider ? Parce que là, je ne vois vraiment pas comment faire !!!!
Merci d'avance pour vos pistes, conseils..... solutions !

Bonjour à tous,
je suis en train de tenter de réaliser un petit script, mais je bloque sur un problème.
- J'ai un fichier "upload.txt' situé dans un répertoire de mon serveur.
- Je cherche une valeur (dans l'exemple, mon pseudo : corneliux) dans ce fichier. NB : la valeur apparait plusieurs fois dans le fichier.
- Je parviens à trouver cette valeur.
- Mais ce que je veux mettre en variable, ce n'est pas cette ligne, mais la ligne suivante, et ça, je ne sais pas faire.
Voici un extrait du fichier upload que je traite : [code] </groundspeak:long_description>
<groundspeak:encoded_hints>entonnoir</groundspeak:encoded_hints>
<groundspeak:logs>
<groundspeak:log id="329446625">
<groundspeak:date>2013-07-13T19:00:00Z</groundspeak:date>
<groundspeak:type>Found it</groundspeak:type>
<groundspeak:finder id="5118841">adesio</groundspeak:finder>
<groundspeak:text encoded="False">2 petits tours d église pour reperer la cache et hop
MPLC</groundspeak:text>
</groundspeak:log>
<groundspeak:log id="328375452">
<groundspeak:date>2013-07-05T19:00:00Z</groundspeak:date>
<groundspeak:type>Found it</groundspeak:type>
<groundspeak:finder id="7600084">lupauwiltho</groundspeak:finder>
<groundspeak:text encoded="False">et de 4!!!</groundspeak:text>
</groundspeak:log>
<groundspeak:log id="326162992">
<groundspeak:date>2013-06-30T19:00:00Z</groundspeak:date>
<groundspeak:type>Found it</groundspeak:type>
<groundspeak:finder id="6269532">paulterguest</groundspeak:finder>
<groundspeak:text encoded="False">en route pour l'eglise suivante:) un cache vite trouvé, malgre des voisin un petit peu curieux! merci pour la cache!</groundspeak:text>
</groundspeak:log>
<groundspeak:log id="323823069">
<groundspeak:date>2013-06-21T19:00:00Z</groundspeak:date>
<groundspeak:type>Found it</groundspeak:type>
<groundspeak:finder id="1794567">Luna49</groundspeak:finder>
<groundspeak:text encoded="False">En route vers Laon. Merci pour la cache.</groundspeak:text>
</groundspeak:log>
<groundspeak:log id="322867297">
<groundspeak:date>2013-06-16T19:00:00Z</groundspeak:date>
<groundspeak:type>Found it</groundspeak:type>
<groundspeak:finder id="5589534">Corneliux</groundspeak:finder>
<groundspeak:text encoded="False">Jour de mariage lors du premier passage, je logue tranquillement cette fois ci.</groundspeak:text>
</groundspeak:log>
</groundspeak:logs>
<groundspeak:travelbugs />
</groundspeak:cache>
</wpt>
[/code]
et voici le code que j'ai pour le moment pour récupérer les données dont j'ai besoin :
[code]/*******************************************************************************************/
//Lecture du fichier et extraction du TITRE et des COORDONNES DE LA CACHE
$i = 0;
$j = 0;
/*Ouverture du fichier en lecture seule*/
//$handle = fopen('fichier.gpx', 'r');
$handle = fopen('tmp/upload.txt', 'r+');
/*Si on a réussi à ouvrir le fichier*/
if ($handle){
/*Tant que l'on est pas à la fin du fichier*/
while (!feof($handle)){
/*On lit la ligne courante*/
$buffer = fgets($handle);
/*On cherche si c'est la ligne des coordonnées de la cache*/
if (preg_match("#<wpt lat=#i", "'.$buffer.'")){
//echo $buffer;
$tab_coord = explode("\"",$buffer); //coord de la cache
// echo "Longitude : ".$tab_coord[1]." Lattitude : ".$tab_coord[3]."<br>";
$tablo_lattitude[$j] = $tab_coord[1];
$tablo_longitude[$j] = $tab_coord[3];
$j++;
}
/*On cherche si c'est la ligne du nom de la cache*/
if (preg_match("#<urlname>#i", "'.$buffer.'")){
eregi("<urlname>(.*)</urlname>",$buffer,$tab_nom); //Nom de la cache
// echo "<strong>".htmlentities($tab_nom[1])."</strong><br>";
$tablo_nom[$i] = htmlentities($tab_nom[1]);
$i++;
}
/*On cherche si c'est la ligne du log du pseudo*/
if (preg_match("#>".$_POST['pseudo']."<#i", "'.$buffer.'")){
C'EST ICI QUE JE GADOUILLE ???????????????????????????????????????????
}
}
/*On ferme le fichier*/
fclose($handle);
}[/code]
Comme vous pouvez le voir, la ligne ou il y a mon pseudo ne m'intéresse pas, mais je souhaiterais pouvoir récupérer la ligne suivante afin de récupérer tout mes commentaires qui sont entre les balises "<groundspeak:text encoded="False">" et "</groundspeak:log>".
Quelqu'un peut m'aider ? Parce que là, je ne vois vraiment pas comment faire !!!!
Merci d'avance pour vos pistes, conseils..... solutions ! :P