Pergunta

Qual é a diferença entre \ n e \ r (eu sei que tem algo a ver com OS), e qual é a melhor maneira de ecoar uma quebra de linha que irá trabalhar de plataforma cruzada?

EDIT: Em resposta a Jarod, eu vou estar usando ths para ecoar uma quebra de linha em um arquivo de log .txt, embora eu tenho certeza que vou usá-lo no futuro para coisas como ecoando HTML Makup em uma página.

Foi útil?

Solução

  • \n é uma quebra de linha Linux / Unix.
  • \r é um clássico Mac OS (não-OS X) de quebra de linha. Mac OS X usa o acima unix \n.
  • \r\n é uma quebra de linha do Windows.

Eu costumo usar apenas \n em nossos sistemas Linux e mais aplicativos do Windows lidar com isso ok de qualquer maneira.

Outras dicas

Use a constante PHP_EOL, que é automaticamente definida para a quebra de linha correto para o sistema operacional que o script PHP está sendo executado.

Note que esta constante é declarada desde o PHP 5.0.2.

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

Para compatibilidade com versões anteriores:

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

A resposta de Jarod contém o uso correto de \ r \ n em vários OS do. Aqui está um pouco de história:

  • \ r, ou o caráter ASCII com código decimal 13, é nomeado CR depois de "retorno de carro".
  • \ n, ou o caráter ASCII com código decimal 10, é chamada de "nova linha", ou LF depois de "line feed".

A terminologia "retorno de carro" e "line feed" remonta a quando teletypes foram usados ??em vez dos terminais com monitor e teclado. Com relação à teletypes ou máquinas de escrever, "retorno de carro" significava mover o cursor e retornando para a primeira coluna de texto, enquanto "line feed" significa girar o rolo para entrar na seguinte linha. Naquela época a distinção fazia sentido. Hoje as combinações \ n, \ r \ r \ n para representar o fim de uma linha de texto são completamente arbitrários.

No retrocompatibilidade necessária para PHP_EOL em PHP4.

Necessidade de afirmação correta de Moore sobre a disponibilidade PHP_EOL constante: ". ... é declarado desde o PHP 5.0.2"

Não, tem sido em torno desde o PHP 4.3.10. Qualquer pessoa que ainda está em execução qualquer coisa menor do que isso não deve ser em negócios de qualquer maneira. A partir de hoje ninguém deve estar usando qualquer coisa menor do que PHP 5!

A partir do PHP manual: "PHP_EOL o 'fim da linha' correta símbolo para esta plataforma . Disponível desde o PHP 4.3.10 e PHP 5.0.2" .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top