Menu

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

RasShaka - 10 nov. 2005 à 16:52 - Dernière réponse : Achille32 37 Messages postés mardi 21 avril 2015Date d'inscription 21 mai 2016 Dernière intervention
- 22 mars 2016 à 18:14
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
Afficher la suite 

31 réponses

+54
Utile
11
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...
Cette réponse vous a-t-elle aidé ?  
Merci beaucoup j'avais exactement le même probléme
Morocco_Power - 14 déc. 2011 à 22:48
$r = chr(13);
fwrite ($fichier, $r);
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.
lakbir abderrahim > fred - 19 févr. 2016 à 01:28
ça marche très bien, merciiiiiiiiii
cs_kamalou 17 Messages postés vendredi 11 avril 2003Date d'inscription 17 mars 2015 Dernière intervention - 17 mars 2015 à 17:49
merci Glock21
+23
Utile
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
+13
Utile
1
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 ?
Oui t'as raison
c'est bien ça "\r\n"
CH4NCE 619 Messages postés jeudi 7 décembre 2006Date d'inscription 8 août 2013 Dernière intervention - 11 janv. 2007 à 15:29
+11
Utile
4
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";
}
?>
echo "<br>";
sp00m` > soluce - 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.
lol c'est </br> et ca marche très bien
là ; preuve -> http://www.bapandno.no-ip.biz
fputs($f, "\r\n"); ça marche
Zep3k!GnO 2027 Messages postés jeudi 22 septembre 2005Date d'inscription 18 novembre 2015 Dernière intervention - 10 nov. 2005 à 17:11
+3
Utile
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."
ceddec 148 Messages postés dimanche 31 juillet 2005Date d'inscription 10 mars 2012 Dernière intervention - 10 nov. 2005 à 17:11
+3
Utile
Bonjour , je ne suis pas sur mais essaie \n
+3
Utile
1
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 463 Messages postés samedi 23 février 2008Date d'inscription 27 avril 2016 Derniè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
Zep3k!GnO 2027 Messages postés jeudi 22 septembre 2005Date d'inscription 18 novembre 2015 Dernière intervention - 26 nov. 2009 à 17:19
+2
Utile
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>";
?>
+2
Utile
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) ).
+2
Utile
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...
+1
Utile
fputs($nomDuFichier, PHP_EOL); marche très bien =)
0
Utile
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) )."
AlBlanc 1 Messages postés lundi 15 juillet 2013Date d'inscription 15 juillet 2013 Dernière intervention - 15 juil. 2013 à 16:54
0
Utile
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
Achille32 37 Messages postés mardi 21 avril 2015Date d'inscription 21 mai 2016 Dernière intervention - 22 mars 2016 à 18:14
0
Utile
Bonjour à tous, je me réjouis de revenir dans le forum après un longue absence.
En fait j'ai un soucis et je souhaite l'intervension de toutes les àmes de bonne volonté pour venir à mon aide.
J'ai une table PRODUITS avec 3 champs: id_produit, nom_produit, prix.
Je voudrais stocker le contenu dans un fichier texte dans mon disque dur.
Voici ma requète:

<?php

$donnees = mysql_query("SELECT id_produit, prix FROM produits WHERE nom_produit = 'Chocolat' ");
$result = mysql_fetch_array($donnees);
$file = fopen('monfichier.txt', 'w');
fputs($file,$result);
fclose($file);
?>
Le problème c'est que je recoi encore $result dans mon fichier, et lorsque je rajoute des cotes on me dit que
le paramètre doit ètre un string.
A l'aide !!!!
Cordialement.....