CommentCaMarche
Recherche
Posez votre question Signaler

PHP - Retour à la ligne dans un fichier texte [Résolu]

RasShaka - Dernière réponse le 26 sept. 2013 à 16:10
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 
Réponse
+43
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...
momiexx- 22 août 2011 à 01:26
wahaaa merci :)
Répondre
loktar- 31 août 2011 à 14:33
sinon en sautant à la ligne tout simplement dans des guillemets simple comme ceci '
';
fonctionne aussi
Répondre
anonyme10- 1 nov. 2011 à 14:45
Merci beaucoup j'avais exactement le même probléme
Répondre
Morocco_Power- 14 déc. 2011 à 22:48
$r = chr(13);
fwrite ($fichier, $r);
Répondre
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.
Répondre
Ajouter un commentaire
Réponse
+16
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/contents/php/phpvar.php3
Ajouter un commentaire
Réponse
+13
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"
Répondre
Ajouter un commentaire
Réponse
+11
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";
}
?>
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.
Répondre
Baptiste- 18 sept. 2013 à 18:18
lol c'est </br> et ca marche très bien
là ; preuve -> http://www.bapandno.no-ip.biz
Répondre
imad Ghanimi- 26 sept. 2013 à 16:10
fputs($f, "\r\n"); ça marche
Répondre
Ajouter un commentaire
Réponse
+3
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
+3
moins plus
Bonjour , je ne suis pas sur mais essaie \n
Ajouter un commentaire
Réponse
+3
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 438Messages postés samedi 23 février 2008Date d'inscription 28 mai 2013Dernière intervention - 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
Répondre
Ajouter un commentaire
Réponse
+2
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
+2
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
+2
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
+1
moins plus
fputs($nomDuFichier, PHP_EOL); marche très bien =)
Ajouter un commentaire
Réponse
+0
moins plus
merci BINU

ça marche

"binu 21 juil. 2010 à 16:16
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
+0
moins plus
Le caractère de retour à la ligne dépend de votre système d'exploitation.

Le '\n' (caractère numéro 13 en ascii) est utilisé sous linux
Le '\r' est utilisé par les systèmes d'exploitation Mac.
Le '\r\n' est utilisé par Windows.

Ceci reste une explication très simplisite.

Pour plus de détails, consulter le wikipédia -> http://fr.wikipedia.org/wiki/Fin_de_ligne
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.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.