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

Résolu
Signaler
Messages postés
7
Date d'inscription
samedi 6 décembre 2003
Statut
Membre
Dernière intervention
28 juin 2006
-
Messages postés
1662
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
-
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

Messages postés
196
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
2 septembre 2005

regarde la source de la page obtenue ?
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
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???"
Messages postés
1662
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1
Utilises des parsers puissant ! : domxml ou sax (mais en php utilise domxml)

, EssayezTestez avant de Poser une question !
http://www.lookstrike.com