Domanda

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 ragione, è la scrittura \n come una stringa, quindi l'aspetto di file come questo:

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 ciò che voglio fare. Voglio solo il file per assomigliare a questo:

40119
40122
40120
42155
36925
45881
42145
45880

Grazie.

È stato utile?

Soluzione

Sostituire '\n' con "\n". La sequenza di escape non viene riconosciuto quando si utilizza '.

.

Per la domanda di come scrivere fine riga, si veda la nota qui . Fondamentalmente, diversi sistemi operativi hanno convenzioni diverse per terminatori di linea. usi Windows "\ r \ n", i sistemi operativi basati su Unix usano "\ n". Si consiglia di attenersi a una convenzione (che avrei scelto "\ n") e aprire il file in modalità binaria (fopen dovrebbe ottenere "wb", non "w").

Altri suggerimenti

Usa PHP_EOL quali uscite \r\n o \n seconda del sistema operativo.

PHP_EOL è una costante predefinita in PHP dal PHP 4.3.10 e PHP 5.0.2. Vedere la registrazione manuale:

Con questo vi farà risparmiare più di codifica sugli sviluppi cross-platform.

IE.

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

Se loop attraverso questo due volte si dovrebbe vedere in 'somefile':

some data
some data

È inoltre possibile utilizzare file_put_contents() :

file_put_contents('ids.txt', implode("\n", $gemList) . "\n", FILE_APPEND);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top