PHP Echo Line Breaks
-
05-07-2019 - |
Question
Quelle est la différence entre \ n et \ r (je sais que cela a quelque chose à voir avec le système d'exploitation) et quel est le meilleur moyen de faire écho à un saut de ligne qui fonctionnera sur plusieurs plates-formes?
MODIFIER: En réponse à Jarod, je l'utiliserai pour rappeler un saut de ligne dans un fichier journal .txt, même si je suis sûr de l'utiliser à l'avenir pour des choses telles que l'écho de HTML maquillage sur une page.
La solution
-
\ n
est un saut de ligne Linux / Unix. -
\ r
est un saut de ligne classique pour Mac OS (non-OS X). Mac OS X utilise l'unix ci-dessus\ n
. -
\ r \ n
est un saut de ligne Windows.
D'habitude, je n'utilise que \ n
sur nos systèmes Linux et la plupart des applications Windows le traitent de toute façon.
Autres conseils
Utilisez la constante PHP_EOL
, qui est automatiquement définie sur le saut de ligne correct pour le système d'exploitation sur lequel le script PHP est exécuté.
Notez que cette constante est déclarée depuis PHP 5.0.2.
<?php
echo "Line 1" . PHP_EOL . "Line 2";
?>
Pour la compatibilité ascendante:
if (!defined('PHP_EOL')) {
switch (strtoupper(substr(PHP_OS, 0, 3))) {
// Windows
case 'WIN':
define('PHP_EOL', "\r\n");
break;
// Mac
case 'DAR':
define('PHP_EOL', "\r");
break;
// Unix
default:
define('PHP_EOL', "\n");
}
}
La réponse de Jarod contient l'utilisation correcte de \ r \ n sur différents systèmes d'exploitation. Voici un peu d'histoire:
- \ r, ou le caractère ASCII avec le code décimal 13, est nommé CR après "retour chariot".
- \ n, ou le caractère ASCII avec le code décimal 10, est nommé "nouvelle ligne" ou LF après "saut de ligne".
La terminologie " retour chariot " et " saut de ligne " date à laquelle les télétypes ont été utilisés à la place des terminaux avec moniteur et clavier. En ce qui concerne les télétypes ou les machines à écrire, "retour de chariot" signifiait déplacer le curseur et revenir à la première colonne de texte, tandis que le "saut de ligne" signifiait faire tourner le rouleau pour aller sur la ligne suivante. A cette époque, la distinction avait du sens. Aujourd'hui, les combinaisons \ n, \ r, \ r \ n pour représenter la fin d'une ligne de texte sont complètement arbitraires.
Aucune compatibilité amont requise pour PHP_EOL sur PHP4.
Nécessité de corriger la déclaration de Moore concernant la disponibilité constante de PHP_EOL: "... est déclaré depuis PHP 5.0.2.".
Non, cela existe depuis PHP 4.3.10. Quiconque exécute encore quelque chose de moins que cela ne devrait de toute façon pas être dans le biz À ce jour, personne ne devrait utiliser moins que PHP 5!