[Parseur Simple] Demande Explication sur le fontionmentt de fread, fgets, fgetc

Résolu
cs_Godson Messages postés 7 Date d'inscription samedi 6 décembre 2003 Statut Membre Dernière intervention 28 juin 2006 - 1 août 2005 à 12:04
cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008 - 1 août 2005 à 15:37
Bonjour,


Voila je dois réalisé un parseur sur fichier que voici:
Liste_TOPO.txt
<contributeur class =  "contributeur">
<nom>admin<nom>
<liste>
 <toponyme class = "toponyme">
  <nom>MONT AAST</nom>
  <ville>AAST</ville>
   64001 
 </toponyme>
 <toponyme class  = "toponyme">
  <nom>Calamitry</nom>
  <ville>Mitry</ville>
  94001
 </toponyme>
</liste>
</contributeur>



Or j'ai commencé par utilisé fread pour voir ce que cela me renvoyait j'ai donc créer ce fichier:
test.php
<html>

Yo loudboy

<?
$fp = fopen("Parseur/Liste_TOPO.txt", "r") or die("Fichier introuvable. L'analyse a ete suspendue");


while ($fdata = fread($fp, filesize ("Parseur/Liste_TOPO.txt"))){


   echo $fdata;
}
?>

</html>



Après interprétation j'obtiens en sortie HTML:
[resultat]Yo loudboy
admin MONT AAST AAST 64001 Calamitry Mitry 94001/resultat


J'aimerais savoir pour quelle raison les balises sont ignorés.
En fait j'aimerais avoir une explication sur le fonctionnement de fread dans ce cas précis.
En effet mon objectif est de pouvoir par exemple de récupérer toutes les infos ou de ne récupérer que les nom ( ou les ville, ou encore les code insee).


Ainsi je saurais si je dois créer mon propre parseur, ou implémenter un existant ( dont l'existence fait peut de doute :wink: ).


Merci d'avance.


PS:
c'est la même chose pour fgets et fgetc.
Les balises sont toujours ignorées.

3 réponses

mcjoedassin Messages postés 196 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 2 septembre 2005
1 août 2005 à 12:07
regarde la source de la page obtenue ?
3
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
1 août 2005 à 13:14
Salut!

Oui, les balises ( même s'il ne s'agit pas de balises HTML valides ) ne sont pas affichées...



Avec fgets, fread & co, tu récupère ce que tu veux dans une variable et tu parse ensuite..



Petite remarque au passage:

while ($fdata = fread($fp, filesize ("Parseur/Liste_TOPO.txt")))

La boucle ne sert à rien puisque fread va lire tout le fichier
d'un coup ( grâce au filesize ). Si tu fais une boucle, c'est, en
général, pour faire un truc dans le genre:

$fdata = '';

while( !feof( $fp ) )

$fdata .= fread( $fp, 4096 );



@++



R@f


www.allpotes.ch: Photos, humour, vidéos, gags, ...

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
3
cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008
1 août 2005 à 15:37
Utilises des parsers puissant ! : domxml ou sax (mais en php utilise domxml)

, EssayezTestez avant de Poser une question !
http://www.lookstrike.com
3
Rejoignez-nous