Parcer le contenu d'un fichier en php

boby87000 -  
boby87000 Messages postés 132 Statut Membre -
Bonjour,

je voudrais faire un scrpit php pour parcer le contenu d'un fichier et recuprerer des champs
par exemple:
Started,StartedDateTime,Time,Sent,Received,Method
00:00:00.431,2009-Sep-21 11:13:12.305,0.086,803,110097,GET,200,text/css,http://www.test.fr/test/fra/css/StylesV9.3.0.css,Yes,2009-Sep-09 12:23:24,2009-Sep-22 13:23:11,2009-Sep-21 09:13:12,2009-Sep-21 09:13:12,,,1,
00:00:00.475,2009-Sep-21 11:13:12.349,0.026,802,1174,GET,200,text/css,http://www.test.fr/test/fra/css/PrintV9.3.0.css,Yes,2009-Sep-09 12:23:24,2009-Sep-22 13:23:11,2009-Sep-21 09:13:12,2009-Sep-21 09:13:12,,,1,

je veux en fait le transmettre ce fichier et il me perse tous les "send" et "Received"
meci
Configuration: Windows XP
Firefox 3.5.1

18 réponses

  1. Alain_42 Messages postés 5413 Statut Membre 904
     
    une piste:

    avec la fonction file() de php tu lis le fichier:

    <?php
    $array_fichier=file('ton_fichier.txt'); //tu mets le chemin relatif depuis ce script vers ton fichier bien sur
    if(sizeof($array_fichier)>0){
    	foreach($array_fichier as $clef=>$ligne){
    		//on parcours l'array donc le contenu du fichier ligne par ligne
    		$array_ligne=explode(',',$ligne); //on sépare par raport à la virgule
    		//affichage par exemple
    		echo "Send= ".$array_ligne[3]." Received= ".$array_ligne[4]."<br />"; //les index de l'array commencent à 0
    	}
    
    }else{
    	echo 'Lecture fichier impossible, revoir le chemin ou le nom !';
    }
    0
  2. boby87000 Messages postés 132 Statut Membre
     
    comment je peux excuter ce sript avec easyphp?
    0
  3. Alain_42 Messages postés 5413 Statut Membre 904
     
    avec Easyphp, tu enregistre le code ci dessus avec comme nom: lire_fichier.php

    sous le dossier www de Easyphp qui doit être dans c:\Programmes Files\EasyPhp...

    ensuite tu lances EasyPhp puis DANS LA BARRE D'ADRESSE DE TON NAVIGATEUR tu tapes:

    http://127.0.0.1/lire_fichier.php

    attention au chemin relatif par rapport à ton fichier à lire, le mieux serait que tu le copie aussi dans le dossier www de easyphp

    comme ça tu n'auras qu'a laisser file('nom_du_fichier_a_lire.txt')
    0
  4. boby87000 Messages postés 132 Statut Membre
     
    ok
    le fichier que je lui passe en parramettre n'est pas du type php
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. boby87000 Messages postés 132 Statut Membre
     
    en fait je vous explique bien l'idée
    l'idée de l'outil est de passer en paramètre a travers un ihm, un fchier de type .csv ensuite ce scrript php permettra d'afficher dans une autre page html certaine données que contienent le fichier.csv

    merci pour votre aide
    0
  7. Alain_42 Messages postés 5413 Statut Membre 904
     
    he bien tu mets

    file('nom_du_fichier_a_lire.csv')
    0
  8. boby87000 Messages postés 132 Statut Membre
     
    merci bien pour votre aide,
    je voudrais savoir comment je fait pour compter le nombre de "send" et le nombre de "received"
    0
  9. Alain_42 Messages postés 5413 Statut Membre 904
     
    Je suppose que dans le fichier il y en un Send et un received à chaque ligne, donc pour avoir le nombre de ligne

    $nb_lignes=sizeof($array_fichier);
    0
  10. boby87000 Messages postés 132 Statut Membre
     
    désolé ce n'est pas le nombre de ligne c'est le nombre total de "send" et "Received" contenu dans le fichier en sachant qu'on a dans chaque ligne "send" et "received" avec des valeurs.
    merci
    0
  11. Alain_42 Messages postés 5413 Statut Membre 904
     
    on a dans chaque ligne "send" et "received" avec des valeurs.

    Alors la c'est hyper compliqué:

    si dans chaque ligne du fichier tu as un Send et un received

    le nombre total c'est quoi ?

    nbr_lignes x 2
    0
  12. boby87000 Messages postés 132 Statut Membre
     
    en fait le fichier contient des rapports de communication entre une machine cliente et un serveur
    en effet chaque ligne contient un "Send" et un "Recevied"
    donc l'idée et de comptabilisé tous les "Send" et un "Recevied" et afficher a la fin par exemple le nombre total de"Send" est : et un "Recevied" est :
    je t'envoi mon mail boby8700@yahoo.fr pour vous envoyer le fichier en piece jointe?
    donc envoyer moi un mail dans cette adresse
    merci d'avance
    0
  13. boby87000 Messages postés 132 Statut Membre
     
    désolé je me suis tromprer sur la mail c'est plutot boby87000@yahoo.fr

    merci pour votre aide
    0
  14. boby87000 Messages postés 132 Statut Membre
     
    bonjour a tous,

    Send= 1182 Received= 1080 Result= 200
    Send= 974 Received= 5388 Result= 200
    Send= 991 Received= 588 Result= 200
    Send= 990 Received= 505 Result= 200
    Send= 985 Received= 726 Result= 200
    Send= 987 Received= 990 Result= 200
    Send= 995 Received= 747 Result= 200
    Send= 985 Received= 1274 Result= 200
    Send= 963 Received= 3195 Result= 200

    je voudrais savoir comment on peut faire le total des "Send" "Receveid" et "Result"

    je vous remercie d'avance
    0
  15. Alain_42 Messages postés 5413 Statut Membre 904
     
    Ha je n'avait pas compris que c'était le total des valeurs alors:

    <?php
    $array_fichier=file('ton_fichier.txt'); //tu mets le chemin relatif depuis ce script vers ton fichier bien sur
    if(sizeof($array_fichier)>0){
    	//init totaux a zero
    	$total_send=0;
    	$total_received=0;
    	$total_result=0;
    	foreach($array_fichier as $clef=>$ligne){
    		//on parcours l'array donc le contenu du fichier ligne par ligne
    		$array_ligne=explode(',',$ligne); //on sépare par raport à la virgule
    		//affichage par exemple
    		echo "Send= ".$array_ligne[3]." Received= ".$array_ligne[4]."<br />"; //les index de l'array commencent à 0
    		//on ajoute dans les totaux
    		$total_send+=$array_ligne[3];
    	$total_received+=$array_ligne[4];
    	$total_result+=$array_ligne[6]; 
    	}
    	echo '<b><br /><br />Total des Send= '.$total_send.' des Received= '.$total_received.' des Result= '.$total_result.'</b>'; //<b></b> c'est pour mettre en gras
    
    }else{
    	echo 'Lecture fichier impossible, revoir le chemin ou le nom !';
    }
    0
  16. boby87000 Messages postés 132 Statut Membre
     
    ok merci
    je voudrais rajouter le tout dans un tableau en faisant une colonne pour "Send" et une autre pour "Recevied"

    merci encore pour tout
    0
  17. boby87000 Messages postés 132 Statut Membre
     
    re,
    il ya aussi un aussi un autre champs c'est le champs "Result" que je recupère en faisant array_ligne[6]

    le soucis est que ce champs contient les codes d'erreurs du protocole http c'est a dire:
    102, 200, 304 etc...... il recupère aussi avec "Result" un champs "cache".

    l'idée est de recupérer les codes types de codes d'erreurs ensuite faire leur somme.

    par exemple
    Result 101=2555,
    Result 200=58888;
    Result 304=447;
    Result cache=10 fois
    vous comprenez?
    vous aviez une autre solution plus facile a me proposer?
    0
  18. Alain_42 Messages postés 5413 Statut Membre 904
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    <body>
    <table border="1">
    <!-- titres des colonnes -->
    <tr><th>Send</th><th>Received</th><th>Result</th></tr>
    <?php
    $array_fichier=file('ton_fichier.txt'); //tu mets le chemin relatif depuis ce script vers ton fichier bien sur
    if(sizeof($array_fichier)>0){
    	//init totaux a zero
    	$total_send=0;
    	$total_received=0;
    	$total_result=0;
    	foreach($array_fichier as $clef=>$ligne){
    		//on parcours l'array donc le contenu du fichier ligne par ligne
    		$array_ligne=explode(',',$ligne); //on sépare par raport à la virgule
    		//affichage 
    		echo '<tr>'; //une ligne a chaque
    		echo '<td>'.$array_ligne[3].'</td>'; // colonnes
    		echo '<td>'.$array_ligne[4].'</td>';
    		echo '<td>'.$array_ligne[7].'</td>';
    		echo '</tr>';
    		//on ajoute dans les totaux
    		$total_send+=$array_ligne[3];
    		$total_received+=$array_ligne[4];
    		$total_result+=$array_ligne[6]; 
    	}
    	//affichage des totaux
    			echo '<tr><td colspan="3">&nbsp;</td></tr>'; //une ligne vide pour séparer
    			
    			echo '<tr style="font:bold;">'; 
    		echo '<td>'.$total_send.'</td>'; 
    		echo '<td>'.$total_received.'</td>';
    		echo '<td>'.$total_result.'</td>';
    		echo '</tr>';
    
    
    }else{
    	echo 'Lecture fichier impossible, revoir le chemin ou le nom !';
    }
    ?>
    </table>
    </body>
    </html>


    attention dans chaque ligne<tr> il faut le même nombre de <td> sinon il faut mettre colspan=

    pour modifier l'affichage, le style, vas voir sur Google les propriétés de la balise <table>
    0
  19. boby87000 Messages postés 132 Statut Membre
     
    Bonjour,

    j'ai un script qui permet de parcer un fichier et recuperer des champs en faisant les totaux des champs a une date D.

    alors je voudrais un scrpit qui permet de comparer ce fichier a un autre fichier a une date D+1

    en me faisant ressortit les differences:
    exmple: les totaux des champs a la date D de mon fichier parcer
    Send, Recevied
    225 222 (Cache) application/x-javascript
    1122 0 (Cache) application/x-javascript
    0 144 (Cache) application/x-javascript
    TOTAU X:
    Send:26.1553KO
    Receveid:295.1396KO
    Requets: 72

    les totaux des champs a la date D+1 de l'autre fichier parcer

    225 222 (Cache) application/x-javascript
    1122 0 (Cache) application/x-javascript
    0 144 (Cache) application/x-javascript
    TOTAU X:
    Send:12.1553KO
    Receveid:47.1396KO
    Requets: 25

    je voudrais ainsi avoir les Differences des deux fichiers:
    par exemple:

    TOTAU X:
    Send:26.1553KO-12.1553KO=X
    Receveid:295.1396KO-47.1396KO=Y
    Requets: 72-25=Z
    0