Page 1 sur 3

rechercher et effacer partie d'un fichier.

Posté : 11 janv. 2007, 22:43
par Gsgsd
Bonjour, j'ai besoin de recuperer une page et de la modifié ensuite en effaçant des partie qui ne m'interesse pas.

j'ai deja la partie pour récuperer le fichier mais ce qu'il faut pour le modifier !!!
$html = implode ('', file ('test.php'));
voila si je veux afficher le code je peux faire:
echo'$html';
et voila c'est tout ce que j'ai, il me faudrait maintenant de quoi effacer une partie au debut puis une partie à la fin mais comme elle risque de changer j'aimerais qu'on repère juste la partie à garder.

voila si quelqu'un peut m'aider, Bonne soirée !!!

Posté : 11 janv. 2007, 22:51
par jojolapine
ah ben oui on peut t'aider...
mais sinon juste par curiositée (ironie ironie) à quoi ressemble les parties à garder/rejeter...
En gros, il faudrait un page exemple...
après avec des expressions régulières, ça peut surement se faire ;-)

Posté : 12 janv. 2007, 00:19
par Ultim4T0m
Déjà, pourquoi mettre des quotes autour de ta variable $html ?
$variable = 'Bonjour';
echo '$variable'; // Affiche $variable
echo "$variable"; // Affiche Bonjour (mais bon... ce n'est pas à faire)
echo $variable; // Affiche Bonjour
Pour le reste, soit plus précis ^^

Posté : 12 janv. 2007, 04:15
par the dreamer
Et tu peux utiliser
file_get_contents()
à la place de
file()
... ça t'économisera l'implode.

Posté : 12 janv. 2007, 22:17
par Gsgsd
Et tu peux utiliser
file_get_contents()
à la place de
file()
... ça t'économisera l'implode.
Merci pour l'info !!!
Déjà, pourquoi mettre des quotes autour de ta variable $html ?
Oups une vieille habitude !!!

En faites le code que je récupere et une page html normal mais ce que je veux garder c'est un tableau contenant un calendrier

voila à quoi ressemblerais le début
<table id="resultat" align="center" width="484">
<tr valign="top" bgcolor="#FFCC33">
<th width="30">Date</th>
<th width="250"><div align="left">Nom de la comp&eacute;tition<br>
Lieu <br>
<img src="../include/spacer.gif" width="190" height="3">
</div></th>
<th width="120"><div align="left">Epreuve</div></th>
<th width="25"><div align="left">Disc et Cat*</div></th>
</tr>
et voila a quoi ressemblerai la fin :
</td>
</tr>
</table>
J'ai verifier et
</table>
n'apparait pas entre le debut et la fin si ça peut servir !!!!

Posté : 12 janv. 2007, 22:30
par Ultim4T0m
Peux-tu être plus précis sur ce que tu veux obtenir, car là, j'avoue ne pas trop suivre...

Tu veux supprimer quoi ? Pour arriver à quoi ?

Posté : 12 janv. 2007, 22:42
par jojolapine
je pense qu'avec une expression régulière du type:

Code : Tout sélectionner

#<table>.*</table>#Us
ça devrait marcher...

Posté : 13 janv. 2007, 01:37
par Gsgsd
Peux-tu être plus précis sur ce que tu veux obtenir, car là, j'avoue ne pas trop suivre...

Tu veux supprimer quoi ? Pour arriver à quoi ?
en faites je veux supprimer tout ce qu'il y a au-dessus de

Code : Tout sélectionner

<table id="resultat" align="center" width="484"> <tr valign="top" bgcolor="#FFCC33"> <th width="30">Date</th> <th width="250"><div align="left">Nom de la comp&eacute;tition<br> Lieu <br> <img src="../include/spacer.gif" width="190" height="3"> </div></th> <th width="120"><div align="left">Epreuve</div></th> <th width="25"><div align="left">Disc et Cat*</div></th> </tr>
et tout ce qui est en dessous de

Code : Tout sélectionner

</td> </tr> </table>

Posté : 13 janv. 2007, 01:39
par jojolapine
et ma solution ne te convient pas ?

Posté : 13 janv. 2007, 01:42
par Gsgsd
et ma solution ne te convient pas ?
En faites je ne comprend pas ta solution pourrait tu m'afficher la bout decode que je dois uitliser avec

Code : Tout sélectionner

file_get_contents()
...

Merci.

Posté : 13 janv. 2007, 01:47
par jojolapine
pardon, j'ai été un peu vite en besogne,
il s'agit d'uiliser des expressions régulières...
via les fonctions preg_match() preg_replace() par exemple,
plus d'infos sur www.expreg.com
et un joli petit testeur içi: http://www.lumadis.be/regex/test_regex.php?lang=fr pour s'amuser en apprenant ;-)
bon et pour info, voici le bout de code qui devrait récupérer ce que tu souhaite:
<?php
$source=file_get_contents(...);
$res=array();
preg_match('#<table>.*</table>#Us',$source,$res);
print_r($res);
?>
évidemment j'ai pas tester, à toi de le faire ;-)

Posté : 13 janv. 2007, 01:56
par Gsgsd
pardon, j'ai été un peu vite en besogne,
il s'agit d'uiliser des expressions régulières...
via les fonctions preg_match() preg_replace() par exemple,
plus d'infos sur www.expreg.com
et un joli petit testeur içi: http://www.lumadis.be/regex/test_regex.php?lang=fr pour s'amuser en apprenant ;-)
bon et pour info, voici le bout de code qui devrait récupérer ce que tu souhaite:
<?php
$source=file_get_contents(...);
$res=array();
preg_match('#<table>.*</table>#Us',$source,$res);
print_r($res);
?>
évidemment j'ai pas tester, à toi de le faire ;-)
Merci mais c'est bizare parce qu'il m'affiche

Code : Tout sélectionner

Array ( )
directementdans ma page aulieu du resultat voila ce que j'ai mis !!!

Code : Tout sélectionner

$source=file_get_contents('http://.../competition/calendrierListe.php'); $res=array(); preg_match('#<table id="resultat" align="center" width="484">.*</table>#Us',$source,$res); print_r($res);
Je me demandais si c'etait pas plus simple de rentrer ce que je veux dans une variable en faisant :

je cherche le debut qui m'interesse ensuite tant que je ne suis pas arrive a l'expression de fin continué etrentré tout ça dans une variable...

si vous voyez ce que je veux dire !!!!

Posté : 13 janv. 2007, 02:24
par jojolapine
à pardon j'avais oublié qu'il y avait des attribut à la balise, change le code en ceci:
<?php
$source=file_get_contents(...);
$res=array();
preg_match('#(<table.*</table>)#Us',$source,$res);
print_r($res);
?>

Posté : 13 janv. 2007, 11:06
par Gsgsd
à pardon j'avais oublié qu'il y avait des attribut à la balise, change le code en ceci:
<?php
$source=file_get_contents(...);
$res=array();
preg_match('#(<table.*</table>)#Us',$source,$res);
print_r($res);
?>
Voila ce que j'obitent

Image

Est ce normal

la page que je recupere est celle la
et ceux que je veux recuperer c'est ça

voilaregardez le code source pour la différence !!!

Posté : 13 janv. 2007, 12:21
par jojolapin
ah ben tu m'avais mal renseigné, il y a d'autres tables dans la page, il faut donc préciser l'id dans l'expression régulière
<?php
$source=file_get_contents(...);
$res=array();
preg_match('#.*(<table +id="resultat".*</table>).*#Us',$source,$res);
print_r($res);
?>