Interruzioni di riga dell'eco di PHP
-
05-07-2019 - |
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.
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!