VIVEZ LE
FOOTBALL !

Posez votre question Signaler

PHP - Retour à la ligne dans un fichier texte

RasShaka - Dernière réponse le 26 avril 2012 à 16:18
Bjour,

j essaie d'ecrire dans un fichier texte à partit d'un script php mais mes retours à la ligne ne marchent pas, j'ai un petit symbole à la place, un petit carré. Est ce qu'il y d'autres façons de faire des retours à la ligne? Ou est ce qu'il y a une solution pour changer le carré en retour chariot dans mon fichier texte?

Merci

RasShaka
Lire la suite 

PHP - Retour à la ligne dans un fichier texte »

24 réponses
Réponse
+31
moins plus
C'est bon ! Je me suis auto-aidé !

J'avais écris :

$i = 0;
foreach($tok as $row){
fputs($file, $tok[$i]);
fputs($file, '\n');
$i++;
}

Or, ce n'est pas '\n' mais "\n", qu'il fallait écrire...

Voila voila...
anonyme10 - 1 nov. 2011 à 14:45
Merci beaucoup j'avais exactement le même probléme
Morocco_Power - 14 déc. 2011 à 22:48
$r = chr(13);
fwrite ($fichier, $r);
fred - 5 avril 2012 à 00:09
ben chez moi y'a que
'
' qui marche, je crois que php n'aime pas juste "\n" car il m'écrit "La phrase bidon\n"
par contre si j'écrit "\r\n" la ça marche. Et si je met juste "\r" ben ça marche pas non plus.
Ajouter un commentaire
Réponse
+12
moins plus
Hélas, le \n\r ne marche pas (du moins pour moi)...

En effet, dans mon fichier, il sera écris :

phrasebidon \n\rdeuxiemeligneencoreplusbidon \n\retc.

au lieu de :

phrasebidon
deuxiemeligneencoreplusbidon

et les caractère unicodes ne marche pas non plus.

Quelqu'un a une idée ?
DevilTN - 3 déc. 2009 à 12:31
Oui t'as raison
c'est bien ça "\r\n"
Ajouter un commentaire
Réponse
+9
moins plus
Salut !!

Un retour à la ligne est comme ceci :
\r\n


Si je ne me trompe pas :)
Je m'en suis servi y'a pas longtemps.

http://www.commentcamarche.net/php/phpvar.php3
Ajouter un commentaire
Réponse
+9
moins plus
juste pour preciser, \n fait bien un retour a la ligne mais visible uniquement dans l'affichage de la source.
\n ou \r s'utilisent donc plutot pour un affichage correct des commentaires contenus dans du code php.
exemple de presentation du code source:

?>
testpf:/var/www# cat tb.php
<?
$tableau = array('az-php','php4','mysql');
print"<!--on définit le tableau et ses éléments-->";echo"\r";
echo"<!-- on parcourt le tableau-->\n\n";
echo"<!--on affiche le contenu-->\n";
foreach ( $tableau as $contenu )
{
print "$contenu.'<BR>'\n";
}
?>
soluce - 31 mars 2009 à 11:29
echo "<br>";
sp00m` - 29 avril 2009 à 17:06
echo "<br>" n'a rien a voir car cela génèrera du code HTML visible dans la source du fichier. De plus, <br> n'est pas valide, à remplacer par <br />.

C'est bien \n qui permet le retour chariot.
Ajouter un commentaire
Réponse
+2
moins plus
t'as essayé avec les caractères unicode ? !
--> & #0D; & #0A; correspondant a CR LF

avec le & et # collé , ici je le mets décollé,sinon le site interprette ca comme des saut de lignes (puisque c'est ce que c'est ! )

Zep3k!GnO
-->kurtis jackson:"Dans la vie tu as besoin de 3 choses : le fitness, l'aérobic et moi."
Ajouter un commentaire
Réponse
+2
moins plus
Bonjour , je ne suis pas sur mais essaie \n
Ajouter un commentaire
Réponse
+2
moins plus
Moi j'ai un petit soucis en rapport je pense avec ces \n \r etc ...

J'ai un fichier .txt dans lequel figure plusieurs lignes de type

:AB:TEXTE 1
TEXTE2
TEXTE3
:CD:TEXTE4
TEXTE5
...
etc

Mon souhait est de remplacer TEXTE1, 2 et 3 par
:AB:111111111
ééééééééé
ééééééééé

Mais quand je test sur le carriage return \n ca me remplace le TEXTE 1 par 1111éééé etc ... or je veux que TEXTE 2 et 3 aussi soit supprimer ... je voulais mettre comme caractère de fin \n: en me disant que le ":" du début de l'autre ligne serait un limiteur ... mais ca marche pas il ne fait rien :( ..

$pat = "/(:AB:)(.*)(\n:)/";
$rep = ":AB:/1111111111111111111\r\néééééééééééééééé\r\néééééééééééééééé\r\n:";
$new = preg_replace($pat, $rep, $str);

Si qq'un à une idée

Merci d'avance
dragondark- 4 août 2010 à 11:18
tu utilise du regex : \ est un caractère échappement, donc en gros tu demande que ce soit n qui soit afficher (ce qui est déjà le ca)
donc en regex ton code tu devrais l'afficher comme ca ;)

$pat = "/(:AB:)(.*)(\\n:)/";

ce qui te permettra d'échapper \ pour qu'il soit afficher comme ca!
pour expliquer une erreur dans du regex

Cordialement
Dragondark de lonlindil
Ajouter un commentaire
Réponse
+1
moins plus
En fait ce qui est bizar avec ce que tu veux faire c'est que la en fait ton expression va pouvoir en effet changer ton texte sous cette forme en ajoutant des 1 et des é mais le probleme c'est que tu ne sais pas combien de saut de ligne il va y avoir, a moins que ça ne soit fixe....
Mais voici un bout de code qui devrait t'aider :

<?php
$sString = "
:AB:TEXTE 1
TEXTE2
TEXTE3
:CD:TEXTE4
TEXTE5";

$pat = "/(:AB):[^:]+:/";
$rep = "$1:1111111111111111111\r\néééééééééééééééé\r\néééééééééééééééé\r\n:";
$new = preg_replace($pat, $rep, $sString);

echo "<pre>".$sString."</pre>";
echo "<hr/><pre>".$new."</pre>";
?>
Ajouter un commentaire
Réponse
+1
moins plus
oui tu as bien raison il ne s'agit pas ni \n ni \r mais bien chr(10) qu'il faut utiliser pour un retour a la ligne dans un fichier texte (voire (chr(13) ).
Ajouter un commentaire
Réponse
+1
moins plus
si je ne me trompe pas,
$str=' Ma ligne 1'." \n\r";

le double cote ( " ) est requis, deplus moi je laisse toujours 1 char Blanc avant histoire de ...

chez moi en tout cas ca marche niquel...
Ajouter un commentaire
Réponse
+0
moins plus
fputs($nomDuFichier, PHP_EOL); marche très bien =)
Ajouter un commentaire
Ce document intitulé « PHP - Retour à la ligne dans un fichier texte » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?