42 votes

Sauts de ligne de l'écho PHP

Quelle est la différence entre \n y \r (Je sais que cela a quelque chose à voir avec le système d'exploitation), et quelle est la meilleure façon d'afficher un saut de ligne qui fonctionne sur toutes les plateformes ?

EDITAR: En réponse à Jarod, j'utiliserai ths pour répercuter un saut de ligne dans un fichier journal .txt, mais je suis sûr que je l'utiliserai aussi à l'avenir pour des choses comme répercuter un contenu HTML sur une page.

123voto

Andrew Moore Points 49765

Utilisez le PHP_EOL qui est automatiquement défini comme 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 rétrocompatibilité :

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");
    }
}

46voto

Jarod Elliott Points 7124

\n est un saut de ligne linux/unix

\r est un saut de ligne classique pour Mac [OS X utilise le saut de ligne 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 gèrent bien de toute façon.

31voto

Federico A. Ramponi Points 23106

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 appelé CR après "carriage return".
  • \n ou le caractère ASCII de code décimal 10, est appelé "nouvelle ligne", ou LF après "line feed".

Les termes "retour chariot" et "saut de ligne" remontent à l'époque où l'on utilisait des télétypes plutôt que des terminaux avec écran et clavier. En ce qui concerne les télétypes ou les machines à écrire, le "retour chariot" signifiait le déplacement du curseur et le retour à la première colonne de texte, tandis que le "saut de ligne" signifiait la rotation du rouleau pour passer à la ligne suivante. À l'époque, cette 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.

7voto

Chris Kunze Points 41

Pas de rétrocompatibilité nécessaire pour PHP_EOL sur PHP4.

Il faut corriger la déclaration de Moore sur la disponibilité constante de PHP_EOL : "... est déclarée depuis PHP 5.0.2.".

Non, il existe depuis PHP 4.3.10. Quiconque utilise encore une version inférieure à celle-ci ne devrait pas être en activité de toute façon. A partir d'aujourd'hui, personne ne devrait utiliser quelque chose de moins que PHP 5 !

Extrait du manuel PHP : "PHP_EOL Le symbole correct de 'fin de ligne' pour cette plateforme. Disponible depuis PHP 4.3.10 et PHP 5.0.2".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X