Quelle est la différence entre\n et\r (je sais que cela a quelque chose à voir avec le système d'exploitation), et quelle est la meilleure façon de faire écho à un saut de ligne qui fonctionnera sur plusieurs plateformes?
EDIT: En réponse à Jarod, je vais utiliser ths pour faire écho à un saut de ligne dans un fichier journal .txt, bien que je sois sûr de l'utiliser à l'avenir pour des choses telles que faire écho au makup HTML sur une page.
\n
est un saut de ligne Linux/Unix.\r
est un saut de ligne classique de Mac OS (non OS X). Mac OS X utilise l'unix ci-dessus \n
.\r\n
est un saut de ligne Windows.J'utilise généralement \n
sur nos systèmes Linux et la plupart des applications Windows le font de toute façon.
Utilisez le PHP_EOL
constant, qui est automatiquement défini 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 une 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 divers OS. Voici un peu d'histoire:
La terminologie "retour chariot" et "saut de ligne" remonte à l'époque où les télétypes étaient utilisés à la place des terminaux avec moniteur et clavier. En ce qui concerne les télétypes ou les machines à écrire, le "retour chariot" signifie déplacer le curseur et revenir à la première colonne de texte, tandis que le "saut de ligne" signifie faire tourner le rouleau pour accéder à la ligne suivante. À cette époque, la distinction avait un 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é ascendante nécessaire pour PHP_EOL sur PHP4.
Besoin de corriger la déclaration de Moore sur la disponibilité constante de PHP_EOL: "... est déclaré depuis PHP 5.0.2.".
Non, il 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 quelque chose de moins que PHP 5!