rechercher et effacer partie d'un fichier.

Eléphanteau du PHP | 36 Messages

11 janv. 2007, 22:43

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 !!!

ViPHP
ViPHP | 3607 Messages

11 janv. 2007, 22:51

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 ;-)

Eléphant du PHP | 445 Messages

12 janv. 2007, 00:19

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 ^^
LLDC
Ulti

Eléphanteau du PHP | 25 Messages

12 janv. 2007, 04:15

Et tu peux utiliser
file_get_contents()
à la place de
file()
... ça t'économisera l'implode.

Eléphanteau du PHP | 36 Messages

12 janv. 2007, 22:17

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 !!!!

Eléphant du PHP | 445 Messages

12 janv. 2007, 22:30

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 ?
LLDC
Ulti

ViPHP
ViPHP | 3607 Messages

12 janv. 2007, 22:42

je pense qu'avec une expression régulière du type:

Code : Tout sélectionner

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

Eléphanteau du PHP | 36 Messages

13 janv. 2007, 01:37

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>

ViPHP
ViPHP | 3607 Messages

13 janv. 2007, 01:39

et ma solution ne te convient pas ?

Eléphanteau du PHP | 36 Messages

13 janv. 2007, 01:42

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.

ViPHP
ViPHP | 3607 Messages

13 janv. 2007, 01:47

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 ;-)

Eléphanteau du PHP | 36 Messages

13 janv. 2007, 01:56

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 !!!!

ViPHP
ViPHP | 3607 Messages

13 janv. 2007, 02:24

à 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);
?>

Eléphanteau du PHP | 36 Messages

13 janv. 2007, 11:06

à 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 !!!

jojolapin
Invité n'ayant pas de compte PHPfrance

13 janv. 2007, 12:21

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);
?>