Эта тема на forum.dklab.ru


Дмитрий Шкинёв: Проблема с разделением массива под ОП
Возникла вот такая проблемка:

Есть одноуровневый массив $site и мне его необходимо записать в файл, но при этом его нужно разбить на строки.
На ум сразу же приходит сделать это так:
file_put_contents($file, implode("\r\n",$site));

Но вот, блин, незадача ... это работает только под операционную систему Windows, а чтобы работало под Unix надо делать так:
file_put_contents($file, implode("\n",$site));

Так вот вопрос: есть ли какой-то способ для того чтобы разделить массив на строки и записать в файл без конфликта систем???

Заранее благодарен за помощь.
bæv:
А цель какая?
34333333333333333:
Вопрос решен, тему можно закрыть.
bæv:
Дмитрий Шкинёв, объясните мне, непонятливому, — если у Вас при запросе данных из файла стоит
explode("\n"
, то зачем Вам понадобилось вставлять в файл "\r\n"?
34333333333333333:
Вопрос решен, тему можно закрыть.
Константин Жинько [tIT]:

Потому что если не вставить "\r\n", а вставить "\n", то это работать будет только в Unix.

explode("\n" корректно разбивает данные только в связке с fread и работает в любой ОП

Кто Вам это сказал? Бред полный!
Давно это уже никого не колышет!
Никогда \r\n не использую и использовать не собираюсь!
34333333333333333:
Вопрос решен, тему можно закрыть.
Ksnk:

$delimiter=( substr(PHP_OS,0,3) == 'WIN')?"\r\n":"\n";

А вот такое не поможет?
Maus:
Дело в том что в Windows если не прописать "\r\n" то данные в файле будут не читабельны
Под Windows уже достаточно вменяемых текстовых редакторов, понимающих юниксовые переносы. Например, EditPlus .
Maus:
Ksnk
Проблема в том, что текст в исходный файл может быть вбит под windows, а парсится это может под Unix.

Если есть возможность, можно split()-ить по \n , rtrim()-ать этот \r и не мучаться.
Ksnk:
Maus
Насколько я понял - исходный массив $site содержит строки без символов переноса строки вообще, так что нужно только сгенерировать "читабельный" текст...
А вдруг у пользователя будет только notepad? :)
Maus:
исходный массив $site содержит строки без символов
чуть ниже там добавлено:
сть файл с данными data.txt ... в начале скрипт берёт из него данные, записывает в массив:
А вдруг у пользователя будет только notepad? :)
Кажется, Блокнот тоже покажет переносы, а при пересохранении добавит \r. Проверить можно - возьмётесь (по хорошему, проверять должен топикстартер - ему вроде это должно быть полезно)?
34333333333333333:

VitaliyM:
Дмитрий Шкинёв
Вам же сказали:
при пересохранении
Только кодировку укажите.
Maus:
VitaliyM
Не-не, я не проверял. Может, это и не так - давно Блокнот не открывал :)
Юрий Насретдинов:
Зато WordPad уже понимает, а он входит в стандартную поставку

Эта тема на forum.dklab.ru