Domanda

Qual è la differenza tra \ n e \ r (so che ha qualcosa a che fare con il sistema operativo) e qual è il modo migliore per fare eco a un'interruzione di linea che funzionerà su più piattaforme?

MODIFICA: in risposta a Jarod, userò questo per echeggiare un'interruzione di riga in un file di registro .txt, anche se sono sicuro che lo userò in futuro per cose come l'eco HTML makup su una pagina.

È stato utile?

Soluzione

  • \ n è un'interruzione di linea Linux / Unix.
  • \ r è una classica interruzione di linea di Mac OS (non OS X). Mac OS X utilizza il precedente \ n unix.
  • \ r \ n è un'interruzione di linea di Windows.

Di solito uso solo \ n sui nostri sistemi Linux e la maggior parte delle app di Windows lo gestiscono comunque bene.

Altri suggerimenti

Utilizza la costante PHP_EOL , che viene automaticamente impostata sull'interruzione di linea corretta per il sistema operativo su cui è in esecuzione lo script PHP.

Nota che questa costante è dichiarata da PHP 5.0.2.

<?php
    echo "Line 1" . PHP_EOL . "Line 2";
?>

Per compatibilità con le versioni precedenti:

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 risposta di Jarod contiene l'uso corretto di \ r \ n su vari sistemi operativi. Ecco un po 'di storia:

  • \ r, o il carattere ASCII con il codice decimale 13, è chiamato CR dopo "return return del carrello".
  • \ n, o il carattere ASCII con il codice decimale 10, è chiamato " newline " oppure LF dopo " avanzamento riga " ;.

La terminologia "ritorno a capo" e " avanzamento riga " risale a quando venivano utilizzati i teletipi anziché i terminali con monitor e tastiera. Per quanto riguarda i tipi di telefono o macchine da scrivere, "ritorno a capo" significava spostare il cursore e tornare alla prima colonna di testo, mentre "avanzamento riga" significava ruotare il rullo per accedere alla riga seguente. A quel tempo la distinzione aveva senso. Oggi le combinazioni \ n, \ r, \ r \ n per rappresentare la fine di una riga di testo sono completamente arbitrarie.

Nessuna compatibilità con le versioni precedenti necessaria per PHP_EOL su PHP4.

È necessario correggere l'affermazione di Moore sulla disponibilità costante di PHP_EOL: " ... è dichiarato da PHP 5.0.2. " ;.

No, esiste da PHP 4.3.10. Chiunque stia ancora eseguendo qualcosa di inferiore a quello non dovrebbe essere in biz comunque. Ad oggi nessuno dovrebbe usare niente di meno di PHP 5!

Dal manuale di PHP: " PHP_EOL Il simbolo "Fine linea" corretto per questo piattaforma. Disponibile da PHP 4.3.10 e PHP 5.0.2 " ;.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top