Retour chariot et fichier texte => \n ne marche pas

Retour chariot et fichier texte => \n ne marche pas - PHP - Programmation

Marsh Posté le 01-10-2008 à 06:34:11    

Code :
  1. $fichier = fopen($format, 'b');
  2.  fwrite ($fichier, "ligne 1\n" );
  3.  $retour = "\n";
  4.  fwrite ($fichier, $retour);
  5.  fwrite ($fichier, "\n" );        // j'insiste hein ?
  6.  fwrite ($fichier, "ligne 2\n" );


 
résultat :
 
ligne 1ligne 2
 
pourquoi ça marche pas ?


---------------
http://www.ypikay.com
Reply

Marsh Posté le 01-10-2008 à 06:34:11   

Reply

Marsh Posté le 01-10-2008 à 06:47:51    

bon j'ai trouvé en chercant un peu trop longtemps...
$r = chr(13);
fwrite ($fichier, $r);


---------------
http://www.ypikay.com
Reply

Marsh Posté le 01-10-2008 à 10:54:53    

De mémoire :

  • changement de ligne windows = CRLF ( "Carriage Return"/retour chariot & "Line Feed"/saut de ligne) soit les caractères de code 10 et 13 : "\r\n"  
  • changement de ligne linux = LF  ( "Line Feed"/saut de ligne) soit le caractère de code 13 : "\n"  
  • changement de ligne macOS : CR  ( "Carriage Return"/retour chariot ) soit le caractère de code 10 : "\r"


Il est donc bizare que ça marche avec un char(13) et pas un "\n" qui représentent le même caractère.
 
PS : On ouvre un fichier avec en mode "b" quand on veut écrire des données binaires dans le fichier. Si t'écris du texte il faut choisir un des modes suivant "a", "a+", "w", "w+", "x" ou "x+". A la réflexion, ça peut venir de là ton problème.


Message édité par omega2 le 01-10-2008 à 11:03:46
Reply

Marsh Posté le 02-10-2008 à 11:04:56    

non j'avais essayé en mode w avant
bizarre


---------------
http://www.ypikay.com
Reply

Marsh Posté le 29-12-2009 à 12:27:48    

hello
j'ai eu les mêmes difficultés et voici les points à faire attention:
le single quote 'valeur' => pourrait être de n'importe quel type (string ou ...)
ici ton texte est du type string => forcer la valeur en string en utilisant les doubles quotes "mon texte \n" ce qui va forcer php à convertir \n en CR.
si on laisse les singles quotes, on risque fort d'afficher le \n !!
pour être sûr d'envoyer du texte à ton fichier, mon petit truc:
 
fwrite($fichier, "".$variable_mon_texte."" ); =>  
 
double+double+point+$var+point+double+double :pt1cable:  
si $var est d'un autre type (numerique,...) il deviendra de type string
 
de plus, pour les Windowsiens, utilisez Wordpad (ou notepad++) et pas le bloc-note
pour visualiser votre texte, vous comprendrez vite!
Là, j'ai pas d'explications quand au comportement du bloc-note... :??:  
 
le mode est à transmettre en type string => double quote "mode" et tous sauf le binaire "b" of course !!


Message édité par littleg322 le 29-12-2009 à 12:39:48
Reply

Marsh Posté le 29-12-2009 à 16:03:21    

pour un retour à la ligne, la constante PHP_EOL est votre amie

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed