comment rajouter un texte à la fin du fichier en conservant l'existant ?

ViPHP
ViPHP | 4039 Messages

04 nov. 2008, 14:24

Ca dépend du soft utilisé
Non. Le standard Windows, c'est Carriage Return / Line Feed.
Non. Firefox, par exemple, utilise uniquement le Line Feed.

C'est peu connu, c'est même rare d'y être confronté. Beaucoup de développeurs prévoient les deux, pensant à la compatibilité windows/*nix, mais ne se sont jamais rendus compte qu'il n'y a presque que IE qui utilise le format windows (je n'ais pas testé les autres navigateurs).

Enfin, je parle surtout de l'input des navigateurs dans une balise textarea. Pour le reste..
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

04 nov. 2008, 16:25

Ca dépend du soft utilisé
Non. Le standard Windows, c'est Carriage Return / Line Feed.
Je ne dit pas le contraire, sauf que nombre de logiciels tournant sur plateforme Win32 comprennent et accepte le LF simple.
Ce n'est pas parce que Microsoft pose un standard que tout le monde le suit. J'irais même jusqu'à dire que seuls les logiciels Microsoft le suive bêtement ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 23 Messages

04 nov. 2008, 16:46

merci

que pensez vous des différents affichages en fonction du code php

merci

ps : la suiote serait de rajouter dans le fichier le contenu d'un formulaire ?

Eléphant du PHP | 422 Messages

05 nov. 2008, 12:16

il n'y a presque que IE qui utilise le format windows (je n'ais pas testé les autres navigateurs).
Quand tu affirmes "il n'y a presque que IE", c'est parce que tu n'as testé que IE et FF ? :)

Dans les champs textarea :
- Opera 9.50 sous Windows utilise le CR/LF (2 caractères)
- Safari 3.1 sous Windows utilise le CR/LF (2 caractères)
- Google 0.3 sous Windows utilise le CR/LF (2 caractères)

Est-ce qu'on peut donc tourner la phrase autrement en disant que sous Windows, il n'y a presque que Firefox qui n'utilise pas le format Windows ?
J'irais même jusqu'à dire que seuls les logiciels Microsoft le suive bêtement
cf ci-dessus.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

05 nov. 2008, 12:34

Vu qu'on parle de fichier, et pas de textarea, je ne connais guère que notepad qui n'affiche pas les sauts de lignes \n
Scite, Notepad++, Crimson, ... comprennent tous les sauts de lignes \n

Maintenant, je ne sais pas comment est-ce que tu fais tes test, mais chez moi, avec le code suivant :
 <html>
	<body>
		<form action="#" method="POST">
			<textarea name="content"><?php echo "Ceci est\n un test \n de fonctionnement" ?></textarea>
			<input type="submit" name="submit" />
		</form>
<?php
	if( isset($_POST['submit']) )
	{
		var_dump($_POST);
		echo "<br />strlen : ". strlen($_POST['content']) ."<br />";
	}
?>
	</body>
</html>
J'obtiens toujours 39 caractères pour la chaine, et mes textarea contiennent toujours les sauts de lignes :-k (FF3, Opera 9.61, IE6 et IE7 sous Windows XP)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 422 Messages

05 nov. 2008, 13:57

Comment je fais mes tests ?
En comptant le nombre de caractères quand on fait une saisie dans un textarea.
Si quand on appuie sur la touche entrée, ce nombre augmente de 2, c'est que ce n'est pas un simple LF qui est stocké par le browser.

Il n'empêche que le standard sous Windows, ce sont les deux caractères CR/LF et que si tu veux que le fichier texte que tu génères soit lisible par tous les éditeurs de texte de cet environnement, c'est ce qu'il faut utiliser.
C'est assez marrant de voir des personnes si sourcilleuses du respect des standards estiment que dans ce cas, c'est à l'utilisateur d'avoir les 'bons' éditeurs. :D

J'arrête là cet échange

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

05 nov. 2008, 15:23

Comment je fais mes tests ?
En comptant le nombre de caractères quand on fait une saisie dans un textarea.
Si quand on appuie sur la touche entrée, ce nombre augmente de 2, c'est que ce n'est pas un simple LF qui est stocké par le browser.
Ok, merci pour la précision
Il n'empêche que le standard sous Windows, ce sont les deux caractères CR/LF et que si tu veux que le fichier texte que tu génères soit lisible par tous les éditeurs de texte de cet environnement, c'est ce qu'il faut utiliser.
Je ne me rappelle pas avoir dit le contraire. J'ai juste dit que nombre de logiciels tournant sous plateforme Win32 comprennaient les simples saut de ligne \n
C'est assez marrant de voir des personnes si sourcilleuses du respect des standards estiment que dans ce cas, c'est à l'utilisateur d'avoir les 'bons' éditeurs. :D
Ca non plus, je ne me rappelle pas l'avoir dit ...
Je t'ai repris lorsque tu avancais que
Et pour que ce soit lisible sous Windows, il faut mettre \r\n
ce qui, selon moi, n'était qu'une partie de la vérité.
En effet, en mettant \n\r, tout les softs le liront, mais je ne veux pas laisser croire que c'est une vérité absolue alors que c'est faux. Et je n'ai jamais encouragé quelqu'un vers un quelconque soft, je n'ai avancé que des comportements de chacun.
J'arrête là cet échange
Dommage, j'y ai trouvé des infos, comme la manière dont tu testes les sauts de ligne. :(
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 23 Messages

05 nov. 2008, 15:34

j'aimerais bien que l'on se reconcentre sur la conversation originale ?

ne pensez vous pas

zeus : je test ton dernier code et je reviens vers toi

tounse

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

05 nov. 2008, 16:41

Nous sommes dedans.
Nous te donnons des éléments qui te servirons surement un jour ou l'autre ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 422 Messages

05 nov. 2008, 18:34

@Zeus,
Ca tourne au pinaillage.
Oui, certains logiciels sous Windows lisent des fichiers textes avec juste un LF alors que ce n'est pas le standard Windows. Comme de la même manière, certains logiciels sous Unix lisent des fichiers textes avec CR/LF alors que ce n'est pas le standard Unix (c.a.d sans rajouter de ligne vide).

D'autre part il n'y a pas de jugement de valeur à avoir, en particulier sur la "bêtise" supposée d'un éditeur et sur la pré-supposition (fausse) qu'il est le seul à respecter le standard. Ce n'est pas toi qui a sorti l'exemple du textarea, mais le coup de "il n'y a que IE..." suivi de "je n'ai pas testé les autres browers", je trouve ça un peu léger.
A ce propos, je confesse un mea culpa
le comportement de Safari est un peu plus compliqué :
au départ vous avez 0 caractères
A) vous tapez retour-chariot : il ajoute 2 caractères LF LF
B) vous supprimez le retour-chariot : il reste 1 caractère LF
C) vous appuyez sur 'A' : il y a 1 caractère A (où est passé le LF ?)
D) vous appuyez sur retour-chariot : il y a 3 caractères (A LF LF)
E) vous supprimez le retour-chariot : il y a 2 caractères (A LF)
F) vous appuyez sur 'A' : il y a deux caractères (A A)
G) vous supprimez les deux A : il reste 0 caractère
H) vous tapez retour-chariot : il y a un seul caractère LF
Donc la situation A et la situation H similaires (un textarea vide) avec un compte de caractères à 0 amènent à deux situations différentes après avoir tapé sur la touche Retour : 1 ou 2 caractères LF insérés.

Il n'y a peut-être que Notepad qui suive scrupuleusement ce standard, mais comme c'est l'éditeur de texte installé par défaut, il est peut-être bon de le prendre en compte, non ? Je ne vois donc pas pourquoi il est nécessaire d'introduire dans le débat des outils inconnus par la plupart des utilisateurs non-informaticiens.

Le seul sens de mon intervention était que si on doit générer un texte pour un utilisateur sous Windows, il est nécessaire de prévoir un CR/LF pour les passages à la ligne.

ViPHP
ViPHP | 4039 Messages

05 nov. 2008, 20:30

"il n'y a que IE..." suivi de "je n'ai pas testé les autres browers", je trouve ça un peu léger.
Mais parce que le but n'était pas de faire un exposé complet. Dans un autre sujet, dédié, peut-être. Tu énonce un règle, et je te dis qu'il y a des exceptions, et une seule suffit. Peut-être le "guère que IE" t'as un peu froissé, admettons, mais c'est pas une raison suffisante pour partir en croisade.

Et si vraiment ça t'est insupportable, tu aurais pu tout tester, et nous pondre un chouette article avec des tests comparatifs. De l'utile quoi, plutôt que d'entamer un débat muré.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.