ecrire dans un fichier texte

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : ecrire dans un fichier texte

par Ripat » 20 juin 2006, 13:38

C'est pas vraiment curieux (c'est surtout ch*** en fait ;)), c'est que windows différencie la "nouvelle ligne" (\n) et le "retour en début de ligne" (\r), et qu'unix ignore ce dernier :)
Allez hop, un peu d'histoire de l'informatique.

A l'époque glorieuse de l'informatique, les premières sorties sur console s'inspiraient des sorties imprimantes mécaniques (on n'avait pas encore inventé les device drivers). Or, sur ces imprimantes préhistoriques, il était indispensable d'effectuer un, voir plusieurs, retour de chariot (ou tête d'impression) avant de passer à la ligne suivante.

Le premier OS de PC, CP/M de Digital Equipement Corporation et, ensuite QDOS ont simplement repris cette habitude sans trop se poser de question sur le pourquoi du comment.

Pour la petite histoire, DEC aurait volontairement introduit ce non-sens informatique pour ne pas être accusé d'avoir copié UNIX dont CP/M s'inspirait très largement.

Microsoft acheta QDOS et le rebaptisa MS-DOS. La suite, vous la connaissez!

La domination de MS a "impacté" les RFC des protocoles internet comme HTTP, FTP etc.... où la fin d'une ligne est matérialisée par un CRLF. Mais les organes normatifs demandent aux applications d'être capable de parser les lignes marquées d'un seul LF .
The line terminator for message-header fields is the sequence CRLF. However, we recommend that applications, when parsing such headers, recognize a single LF as a line terminator and ignore the leading CR.
http://tools.ietf.org/html/2616#section-19.3
Voilà un beau sujet pour une thèse de doctorat :wink:

Source:
http://en.wikipedia.org/wiki/CRLF

par iclo » 20 juin 2006, 11:55

Si je me souviens bien, Notepad ne les gère pas, mais wordpad si

par zeus » 20 juin 2006, 11:51

Comme le dise mes collègues, les retours à la ligne sont présent mais les éditeurs de textes basiques comme notpad n'affiche que les retours Windows.

Pour afficher ton texte correctement, il faut que tu utilises un autre éditeur de texte ... ou que tu passes au saut de ligne Win32 :?

par Ryle » 20 juin 2006, 11:48

C'est pas vraiment curieux (c'est surtout ch*** en fait ;)), c'est que windows différencie la "nouvelle ligne" (\n) et le "retour en début de ligne" (\r), et qu'unix ignore ce dernier :)

Au pire, tu peux toujours y mettre des <br> et consulter ton fichier de log directement en html ;)

par Ripat » 20 juin 2006, 11:24

Quelque chose me dit que tu affiches le log sous Windows non?

Il faut savoir que windows a besoin de deux caractères pour faire un retour ligne. C'est curieux mais c'est comme ça!

*nix --> \n
windows--> \r\n

ecrire dans un fichier texte

par azerty53 » 20 juin 2006, 11:20

bonjour,

je cherche a faire un truc simple mais je comprend pas pourquoi il ne veut pas

j'ai une page erreur.php qui doit ecrire dans un fichier texte de log

mais quand je veux mettre un retour a la ligne il me met un petit carré a la place et il ecrit tout a la suite sans faire de saut de ligne :cry: :cry: :cry:
$monfichier = fopen("Log/erreur.txt","a+");

$referer = $_SERVER['HTTP_REFERER'];
$parcours = $_SERVER['REQUEST_URI'];
$date = time();
$ip = $_SERVER['REMOTE_ADDR'];
$host = $_SERVER['HTTP_HOST'];
$navigateur = $_SERVER['HTTP_USER_AGENT'];

fputs($monfichier, "$referer - ");
fputs($monfichier, "$parcours - ");
fputs($monfichier, "$date - ");
fputs($monfichier, "$ip - ");
fputs($monfichier, "$host - ");
fputs($monfichier, "$naviguateur - ");
fputs($monfichier, "\n");

fclose($monfichier);

mais je ne pense pas que mon code sois si faux que ca ;(

merci de votre precieuse aide ;)