Pergunta

Meu código:

$i = 0;
$file = fopen('ids.txt', 'w');
foreach ($gemList as $gem)
{
    fwrite($file, $gem->getAttribute('id') . '\n');
    $gemIDs[$i] = $gem->getAttribute('id');
    $i++;
}
fclose($file);

Por algum motivo, está escrevendo \n Como uma string, então o arquivo se parece com o seguinte:

40119\n40122\n40120\n42155\n36925\n45881\n42145\n45880

Do Google'ing, me diz para usar \r\n, mas \r é um retorno de carruagem que não parece ser o que eu quero fazer. Eu só quero que o arquivo fique assim:

40119
40122
40120
42155
36925
45881
42145
45880

Obrigado.

Foi útil?

Solução

Substituir '\n' com "\n". A sequência de fuga não é reconhecida quando você usa '.

Veja o manual.

Para a questão de como escrever finais de linha, consulte a nota aqui. Basicamente, diferentes sistemas operacionais têm convenções diferentes para finais de linha. O Windows usa " r n", sistemas operacionais baseados em UNIX usam " n". Você deve seguir uma convenção (eu escolhi " n") e abrir seu arquivo no modo binário (fopen deve obter "wb", não "w").

Outras dicas

Usar PHP_EOL quais saídas \r\n ou \n dependendo do sistema operacional.

PHP_EOL é uma constante predefinida no PHP desde o PHP 4.3.10 e o PHP 5.0.2. Veja o manual Postagem:

Usar isso economizará codificação extra em desenvolvimentos de plataforma cruzada.

Ou seja.

$data = 'some data'.PHP_EOL;
$fp = fopen('somefile', 'a');
fwrite($fp, $data);

Se você se enrolasse por isso duas vezes veria em 'SomeFile':

some data
some data

Você também pode usar file_put_contents():

file_put_contents('ids.txt', implode("\n", $gemList) . "\n", FILE_APPEND);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top