OVH Cloud OVH Cloud

fichier texte : Fin de ligne windows

1 réponse
Avatar
Denis
Bonjour,

je dois générer un fichier texte d'export. Les enregistrements doivent
être séparés par RC NL (0D 0A).
Donc, dans mon script php je fais un :

$enr="champs formatés\r\n";
fwrite($fic,$enr);

Si j'ouvre mon fichier txt avec un éditeur hexa, c'est ok, j'ai 0D 0A
comme séparateur.

Le problème c'est que ça marche sur ma config (win XP, wamp5) si le
fichier est généré par mon client (win NT, easyphp 1.6) je me retrouve
avec 0D 0D 0A comme séparateur ! Comme si le fwrite ajoutait lui même un
0D !

Le comportement des fichiers textes est-il différent entre php4 et 5 ?
Une piste ?

Merci beaucoup.

Denis

1 réponse

Avatar
Olivier Miakinen

je dois générer un fichier texte d'export. Les enregistrements doivent
être séparés par RC NL (0D 0A).
Donc, dans mon script php je fais un :

$enr="champs formatésrn";
fwrite($fic,$enr);

Si j'ouvre mon fichier txt avec un éditeur hexa, c'est ok, j'ai 0D 0A
comme séparateur.

Le problème c'est que ça marche sur ma config (win XP, wamp5) si le
fichier est généré par mon client (win NT, easyphp 1.6) je me retrouve
avec 0D 0D 0A comme séparateur ! Comme si le fwrite ajoutait lui même un
0D !

Le comportement des fichiers textes est-il différent entre php4 et 5 ?


Le comportement *par défaut* est différent depuis PHP 4.3.2 :

<cit. http://www.php.net/manual/fr/function.fopen.php>
Note : Depuis PHP 4.3.2, le mode par défaut est le mode binaire pour
toutes les plates-formes qui font la distinction entre les modes binaire
et texte. Si vous rencontrez des problèmes dans vos scripts après une
mise à jour, essayez d'utiliser le flag 't' en attendant que vous
rendiez votre script plus portable comme mentionné ci-dessous.
</cit.>

De deux choses l'une : soit tu ouvres tes fichiers avec l'option 't'
et tu n'écris que n, soit tu les ouvres avec l'option 'b' et tu écris
rn. Sur Windows, il faut toujours préciser l'une des deux options pour
ne pas avoir de problème.