par
Tchukai » 14 août 2008, 21:33
D'accord d'accord.
Je vois que mon incompréhension du problème allait plus loin que je ne le pensais.
J'avais assimilé le \n comme quelque chose qui n'avait nullement besoin d'être interprété. Je pensais que lorsque le "visionneur" de code Firefox (Ctrl+u) rencontrait un \n, c'était à lui de l'interpréter comme une indication de passage à la ligne. D'où ma surprise de voir ce \n dans le code source.
En fait, si on veut que la destination voit un passage à la ligne, \n
doit être interprété par PHP en une "entité" qui indique ce passage à la ligne.
Question subsidiaire alors, tant qu'à foutre, quelle "entité" est-ce exactement ? Un test répond à la question :
// Ici les " sont obligatoires donc pour que php interprète la chose comme "l'entité" de passage à la ligne.
ord("\n") // 10
Donc "l'entité" en question est un simple caractère. Comme je suis paranoïaque, je vérifie :
echo 'Blabla '. chr(10) .' bla'; // Affiche bien le passage à la ligne dans le code source et non un \n.
Ça marche, et du coup add
cslashes() me parait plus utile maintenant que j'ai compris deux-trois trucs.
$aLaLigne = 'Blabla '. chr(10) .' bla';
$aLaLigne = addcslashes($aLaLigne, "\n"); // Converti le caractère de passage à la ligne en sont équivalent à interpréter -> \n :).
// Ici il n'y a plus de passage à la ligne dans le code source, mais un beau \n !
echo $aLaLigne; // (Ctrl+u) affiche bien -> Blabla \n bla
D'accord d'accord.
Je vois que mon incompréhension du problème allait plus loin que je ne le pensais.
J'avais assimilé le \n comme quelque chose qui n'avait nullement besoin d'être interprété. Je pensais que lorsque le "visionneur" de code Firefox (Ctrl+u) rencontrait un \n, c'était à lui de l'interpréter comme une indication de passage à la ligne. D'où ma surprise de voir ce \n dans le code source.
En fait, si on veut que la destination voit un passage à la ligne, \n [b]doit être interprété par PHP[/b] en une "entité" qui indique ce passage à la ligne.
Question subsidiaire alors, tant qu'à foutre, quelle "entité" est-ce exactement ? Un test répond à la question :[php]// Ici les " sont obligatoires donc pour que php interprète la chose comme "l'entité" de passage à la ligne.
ord("\n") // 10[/php]Donc "l'entité" en question est un simple caractère. Comme je suis paranoïaque, je vérifie :[php]echo 'Blabla '. chr(10) .' bla'; // Affiche bien le passage à la ligne dans le code source et non un \n.[/php]Ça marche, et du coup add[b][color=red]c[/color][/b]slashes() me parait plus utile maintenant que j'ai compris deux-trois trucs. [php]$aLaLigne = 'Blabla '. chr(10) .' bla';
$aLaLigne = addcslashes($aLaLigne, "\n"); // Converti le caractère de passage à la ligne en sont équivalent à interpréter -> \n :).
// Ici il n'y a plus de passage à la ligne dans le code source, mais un beau \n !
echo $aLaLigne; // (Ctrl+u) affiche bien -> Blabla \n bla [/php]