Rechercher : dans
Par :

[PHP] Lire/écrire un fichier texte par ligne

Dernière réponse le 16 jan 2009 à 10:49:14 Yoan, le 3 jan 2008 à 19:54:39 
 Signaler ce message aux modérateurs

Bonjour,
Le sujet a déjà été abordé sur quelques forums, mais je n'ai trouvé aucune réponse satisfaisante.
Je souhaite lire un fichier texte par ligne.
J'ai trouvé des histoires de fopen avec le 256e bit (comme quoi chaque 255 bit on considère une nouvelle ligne), mais je n'ai pas compris grand-chose.
Quelqu'un aurait-il une solution ?
Merci.
L'urgent est fait, l'impossible est en cours,
Pour les miracles, prévoir un délai ...

Configuration: Linux
Firefox 2.0.0.11

Meilleures réponses pour « [PHP] Lire/écrire un fichier texte par ligne » dans :
Comment lire un fichier ligne par ligne VoirComment lire un fichier ligne par ligne Préambule Boucle while Syntaxe Exemple Astuces Bonus Boucle for Syntaxe Préambule Une des erreurs les plus communes dans l'apprentissage des scripts "bash" sous GNU/LInux pour lire un fichier...
PHP - Les fichiers VoirLa gestion des fichiers avec PHP Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier...

1

alain42, le 3 jan 2008 à 21:32:03

Bonsoir,

une fonction php beaucoup plus simple:

file()

elle ouvre le fichier, le lit ligne par ligne, le met dans un array et ferme

$array_fichier=file('chemin_vers_ton_fichier/fichier.txt');

Répondre à alain42

2

Yoan, le 3 jan 2008 à 23:20:31

Merci :)
Mon but c'est de réaliser un petit compteur. Chaque variable $varX peut être incrémentée ou non selon les cas
J'ai essayé comme ça :

// LECTURE - Si fichier existe, lire les anciens chiffres, sinon mettre toutes les variables à 0
if(file_exists("/fichier.txt"))
  {
  $array=file("/fichier.txt",'r+');
  $var1=$array[0];
  $var2=$array[1];
  $var3=$array[2];
  $var4=$array[3];
  $var5=$array[4];
  $var6=$array[5];
  $var7=$array[6];
  $var8=$array[7];
  $var9=$array[8];
  $var10=$array[9];
  $var11=$array[10];
  $var12=$array[11];
  }
else
  {
  $var1=$var2=$var3=$var4=$var5=$var6=$var7=$var8=$var9=$var10=$var11=$var12=0;
  }
...............traitement...............
//ECRITURE Ecrire les nouvelles valeurs $varX des compteurs
$compt=fopen("/fichier.txt",'w+');
fputs($compt,"$var1\r\n$var2\r\n$var3\r\n$var4\r\n$var5\r\n$var6\r\n$var7\r\n$var8\r\n$var9\r\n$var10\r\n$var11\r\n$var12");
fclose($compt);

Problème : A chaque écriture du fichier, il y a un retour à la ligne de trop.
Après 3 essais qui auraient dû incrémenter 3 fois les mêmes variables, je me retrouve avec 3 retours à la ligne de trop et du coup les compteurs ne sont pas incrémentés correctement et certains compteurs disparaissent :( :
0



1



0



0



0



0

Merci ! :)
L'urgent est fait, l'impossible est en cours,
Pour les miracles, prévoir un délai ...

Répondre à Yoan

3

alain42, le 4 jan 2008 à 13:29:57
  • +1

Bonjour,

Il faut ecrire ligne par ligne, donc dans un eboucle for:

Essayes comme ça, tu enlèvera les echo bien sur ensuite;

<?php
// LECTURE - Si fichier existe, lire les anciens chiffres, sinon mettre toutes les variables à 0
$path=getcwd();//recup du chemin vers les fichier
if(file_exists($path."/fichier.txt")){
  $array=file($path."/fichier.txt");
  $var1=$array[0];
  $var2=$array[1];
  $var3=$array[2];
  $var4=$array[3];
  $var5=$array[4];
  $var6=$array[5];
  $var7=$array[6];
  $var8=$array[7];
  $var9=$array[8];
  $var10=$array[9];
  $var11=$array[10];
  $var12=$array[11];
  echo "var1 lue: ".$var1."<br><br>";
  }
else
  {
  $var1=0;$var2=0;$var3=0;$var4=0;$var5=0;$var6=0;$var7=0;$var8=0;$var9=0;$var10=0;$var11=0;$var12=0;
  }

//...............traitement...............
//ECRITURE Ecrire les nouvelles valeurs $varX des compteurs
//il faur ecrire ligne par ligne, donc tu mets tes var dans un array, plus facile a parcourir
// bien sur tu mets les nouvelles valeurs des var avant de les rentrer dans l'array
$ajout=1;// valeur pour tester
$array_valeurs=array($var1,$var2,$var3,$var4,$var5,$var6,$var7,$var8,$var9,$var10,$var11,$var12);

if($compt=fopen($path."/fichier.txt",'w+')){
	for($i=0;$i<sizeof($array_valeurs);$i++){
		$n=$i+1;
		$val_a_ecrire=$array_valeurs[$i]+$ajout;
		fputs($compt,$val_a_ecrire."\r\n");
		echo "var$n ecrit: ".$val_a_ecrire."<br>";
	}
	fclose($compt);
}
?>

Répondre à alain42

4

 Yoan, le 4 jan 2008 à 21:48:20
  • +1

MMMmmh, c'est mon code qui gère les incrémentations qui foire et qui décale les lignes.
Mais sinon ça marche.
Le problème des compteurs qui disparaissent c'est l'erreur de syntaxe que j'ai faite avec file() (pas de 'r+')

Merci !
L'urgent est fait, l'impossible est en cours,
Pour les miracles, prévoir un délai ...

Répondre à Yoan
Collection CommentÇaMarche.net