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

Signaler
-
Messages postés
37
Date d'inscription
mardi 21 avril 2015
Statut
Membre
Dernière intervention
21 mai 2016
-
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

14 réponses

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...
59
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci

Merci beaucoup j'avais exactement le même probléme

$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.
> fred
ça marche très bien, merciiiiiiiiii
Messages postés
17
Date d'inscription
vendredi 11 avril 2003
Statut
Membre
Dernière intervention
17 mars 2015

merci Glock21
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.

https://www.commentcamarche.net/contents/804-php-les-variables
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"
Messages postés
616
Date d'inscription
jeudi 7 décembre 2006
Statut
Membre
Dernière intervention
8 août 2013
460
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>";
> soluce
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
Messages postés
2027
Date d'inscription
jeudi 22 septembre 2005
Statut
Membre
Dernière intervention
18 novembre 2015
200
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."
Messages postés
148
Date d'inscription
dimanche 31 juillet 2005
Statut
Membre
Dernière intervention
10 mars 2012
81
Bonjour , je ne suis pas sur mais essaie \n
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
Messages postés
462
Date d'inscription
samedi 23 février 2008
Statut
Membre
Dernière intervention
27 avril 2016
150
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
Messages postés
2027
Date d'inscription
jeudi 22 septembre 2005
Statut
Membre
Dernière intervention
18 novembre 2015
200
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>";
?>
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) ).
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...
fputs($nomDuFichier, PHP_EOL); marche très bien =)
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) )."
Messages postés
1
Date d'inscription
lundi 15 juillet 2013
Statut
Membre
Dernière intervention
15 juillet 2013

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 -> https://fr.wikipedia.org/wiki/Fin_de_ligne
Messages postés
37
Date d'inscription
mardi 21 avril 2015
Statut
Membre
Dernière intervention
21 mai 2016

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.....