Должен ли я использовать \ r или \ n для explode () содержимого файла в PHP? - PullRequest
1 голос
/ 15 мая 2009

Я создаю функцию, которая может принимать строку, которая либо извлекается через file_get_contents() в локальном текстовом файле, либо что-то извлекается из URL, такого как http://site.com/338383.txt.

Файл будет разделенным табуляцией файлом, каждый элемент которого находится в отдельной строке. Лучше использовать строку \n или \r до explode() и получить массив каждой строки?

Я заметил, что в некоторых случаях \n не работает. Я хотел бы последовательный способ, который работает все время. Есть мысли?

Ответы [ 4 ]

5 голосов
/ 15 мая 2009

Вы можете использовать file () для получения содержимого файла в виде массива с отдельными строками.

2 голосов
/ 15 мая 2009

Как указывает duckyflip , вы можете использовать функцию file () , чтобы получить массив строк файла. Однако, если вам все еще нужно взорваться (по неизвестной причине), вы должны использовать PHP-константу PHP_EOL вместо '\ n', поскольку она кроссплатформенна.

1 голос
/ 15 мая 2009

Проблема в том, что символ новой строки определяется по-разному для разных кодировок и платформ "текст / обычный". Быстрое и грязное решение, вероятно, заключалось бы в использовании split и регулярного выражения "\ r \ n | \ r | \ n", однако оно может сломаться в некоторых файлах Unicode и не имеет смысла "context". То есть если у вас есть файл, в котором LF (\ n) используется в качестве маркера EOL, и там есть некоторые CR, которые должны были быть сохранены, CR также будут разбиты.

0 голосов
/ 15 мая 2009

Вы можете использовать preg_split () для разнесения с помощью / \ n \ r | \ n | \ r /, а затем trim () каждого элемента, чтобы убедиться, что нет пробельных пробелов остается (если это уместно).

...