Page 1 sur 1
recuperation fichier texte : supprimer saut de ligne
Posté : 23 avr. 2007, 10:17
par pierrot
Bonjour,
J'ai un fichier texte contenant des enregistrements que j'ouvre avec fopen. Je recupere ces enregistrements ligne par ligne avec fgets.
Le problème est que qd j'affiche le contenu de mon tableau créé avec fgets, il y a un saut de ligne entre chaque ligne de mon tableau. Comment faire pour le supprimer? Mais surtout, comment faire pour recuperer les lignes de mon fichier texte sans ce saut de ligne...
Si ca peut mettre sur la voie, le fichier texte a été rempli par un fputs auparavant
fputs($fp,$value."\r\n")
Merci
Posté : 23 avr. 2007, 10:43
par pierrot
j'ai refait un ptit script qui reprend les étapes de mon traitement pour expliquer
<?php
$tab=array();
$chaine='jfdkgjkhgkdhfg-jkjhgfkgbfbhg-kgkjgkbgkh-kgkgkhgkhgkjg-hgjhgvjh';
$tab=explode('-',$chaine);
echo '<pre>';
print_r($tab);
echo '</pre>';
/********************on place chque ligne de $tab dans le fichier ouverture.txt********************/
$fp = fopen("ouverture.txt","w+");
fseek($fp,0);
foreach ($tab as $value) {
fputs($fp,$value."\r\n");}
fclose($fp);
/********************on ouvre le fichier ouverture.txt pour afficher chaque ligne******************/
$fic=fopen("ouverture.txt",'r+');
while(!feof($fic)){
$ligne2[]= fgets($fic,4096);
}
echo '<pre>';
print_r($ligne2);
echo '</pre>';
?>
Donc qd je reouvre mon fichier ouverture.txt crée, des sauts de lignes viennent se mettre à la fin de chaque enregistrements, comment faire pour les enlever?
merci
Posté : 23 avr. 2007, 10:43
par Sékiltoyai
Met juste \n pour le saut de ligne, le retour charriot est inutile derrière.
Posté : 23 avr. 2007, 11:34
par pierrot
\n uniquement me donne exactement la meme chose...
Posté : 23 avr. 2007, 12:02
par Ryle
C'est normal.. fgets() te retourne les données du fichier ligne par ligne, mais n'a aucune raison d'y supprimer des caractères. Il conserve donc les retours charriot qui se trouvent au bout de chaque ligne.
Si tu veux les supprimer, il te suffit d'utiliser str_replace() ou substr() pour les dégager

(le premier étant plus propre, puisque tu peux virer aussi bien "\r\n" que "\n" sans te soucier de la façon dont le fichier a été créé)
Posté : 23 avr. 2007, 12:32
par pierrot
j'ai rajouté le str_replace, mais les sauts de lignes sont toujours présents!!!
voilà ce que j'ai rajouté
$old=array("\r\n","\n");
foreach ($ligne2 as $value){
$value=str_replace($old,"",$value);
}
Posté : 23 avr. 2007, 16:09
par Ryle
Euh... attention, là tu colle la valeur de ton tableau dans ta variable, et tu modifies le contenu de ta variable, mais ca ne change en rien le contenu du tableau. Essayes comme ceci

:
for ($i=0; $i < count($ligne2); $i++) {
$ligne2[$i] = str_replace(array("\r\n","\n"), "", $ligne2[$i]);
}