Scrittura di una nuova riga su file in PHP (avanzamento riga)


109

Il mio codice:

$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);

Per qualche motivo, sta scrivendo \ncome una stringa, quindi il file ha questo aspetto:

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

Da Google'ing mi dice di usare \r\n, ma \rè un ritorno a capo che non sembra essere quello che voglio fare. Voglio solo che il file assomigli a questo:

40119
40122
40120
42155
36925
45881
42145
45880

Grazie.

Risposte:


278

Sostituisci '\n'con "\n". La sequenza di escape non viene riconosciuta quando si utilizza '.

Vedere il manuale .

Per la domanda su come scrivere le terminazioni di riga, vedere la nota qui . Fondamentalmente, diversi sistemi operativi hanno convenzioni diverse per le terminazioni di riga. Windows utilizza "\ r \ n", i sistemi operativi basati su unix utilizzano "\ n". Dovresti attenersi a una convenzione (io ho scelto "\ n") e aprire il file in modalità binaria ( fopendovrebbe ottenere "wb", non "w").


Ho cambiato "\ r \ n" in "\ n" per la fine della mia riga e ha funzionato. Grazie.
csonuryilmaz

ora il mio codice utilizza sia "e 'e mi dà fastidio
Mr PizzaGuy

In effetti, puoi effettivamente notare che \ n viene evidenziato quando usi "" ma non quando usi "". (Questo è, se il tuo editor utilizza l'evidenziazione della sintassi, il mio è Sublime Text 3)
DarkVeneno

68

Usa le PHP_EOLuscite \r\no in \nbase al sistema operativo.


4
Non metterti nei guai, usalo sempre a \nmeno che tu non voglia aprire il file in un sistema operativo specifico - in tal caso, usa la combinazione di nuova riga di quel sistema operativo e non il sistema operativo su cui stai eseguendo PHP ( PHP_EOL).
Alix Axel

60

PHP_EOL è una costante predefinita in PHP a partire da PHP 4.3.10 e PHP 5.0.2. Vedere l' inserimento manuale :

L'utilizzo di questo ti farà risparmiare codice extra sugli sviluppi multipiattaforma.

IE.

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

Se lo ripetessi due volte, vedresti in 'somefile':

some data
some data

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.