Написання нового рядка для файлу в PHP (стрічка каналу)


109

Мій код:

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

Чомусь він пише \nяк рядок, тому файл виглядає так:

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

Від Google'ing він каже мені використовувати \r\n, але \rце повернення вагона, яке, здається, не те, що я хочу зробити. Я просто хочу, щоб файл виглядав так:

40119
40122
40120
42155
36925
45881
42145
45880

Дякую.

Відповіді:


278

Замініть '\n'на "\n". Послідовність виходу не розпізнається під час використання '.

Дивіться посібник .

Питання про те, як написати закінчення рядків, дивіться у примітці тут . В основному різні операційні системи мають різні умови для закінчення рядків. Windows використовує "\ r \ n", операційні системи на базі unix використовують "\ n". Ви повинні дотримуватися однієї конвенції (я вибрав "\ n") і відкрийте файл у двійковому режимі ( fopenмає отримати "wb", а не "w").


Я змінив "\ r \ n" на "\ n" для мого рядка, який закінчується amd, що він працював. Дякую.
csonuryilmaz

тепер мій код використовує "і те, 'і це мене турбує
Містер PizzaGuy

Насправді ви можете фактично помітити, що \ n виділяється під час використання "", але не під час використання "". (Це якщо ваш редактор використовує підсвічування синтаксису, моє піднесений текст 3)
DarkVeneno

68

Використовуйте PHP_EOLвиходи \r\nабо \nзалежно від ОС.


4
Не виникайте проблем, завжди використовуйте, \nякщо ви не хочете відкрити файл у певній ОС - якщо так, використовуйте комбінацію нового рядка цієї ОС, а не ОС, на якій працює PHP ( PHP_EOL).
Алікс Аксель

60

PHP_EOL - це заздалегідь визначена константа в PHP, починаючи з PHP 4.3.10 та PHP 5.0.2. Дивіться ручну публікацію:

Використовуючи це, ви заощадите додаткове кодування на розробках між платформами.

IE.

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

Якщо ви переглянете це двічі, ви побачите у "якомусь файлі":

some data
some data

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.