Я видел, что многие разработчики используют разные методы для разбиения строки на новые строки, но я запутался, что правильно: \r\n
OR \n
только?
\n
используется для Unix-систем (включая Linux и OSX).
\r\n
в основном используется в Windows.
\r
используется на действительно старых компьютерах Mac.
Данный ответ далек от завершения. На самом деле, это настолько далекое от завершения, что оно побуждает читателя поверить, что этот ответ зависит от ОС, когда он не является. Это также не то, что зависит от языка программирования (как предполагали некоторые комментаторы). Я собираюсь добавить дополнительную информацию, чтобы сделать это более понятным. Во-первых, давайте дадим список текущих новых вариаций линии (как в том, что было с 1999 года):
\r\n
используется только в Windows Notepad, командной строке DOS, большей части Windows API и некоторых (более старых) приложениях Windows. \n
используется для всех других систем, приложений и Интернета. Вы заметите, что я поместил большинство приложений Windows в группу \n
которые могут быть слегка противоречивыми, но прежде чем вы не согласитесь с этим утверждением, пожалуйста, возьмите текстовый файл в формате UNIX и попробуйте его в 10 удобных для Windows приложений Windows по вашему выбору ( которые не указаны в моих исключениях выше). Какой процент из них справился с этим просто отлично? Вы обнаружите, что они (практически) реализуют автоматическое обнаружение окончаний строк или просто используют \n
потому что, хотя Windows может использовать \r\n
, Интернет использует \n
. Поэтому для приложений рекомендуется использовать только \n
если вы хотите, чтобы ваш вывод был дружественным к Интернету.
PHP также определяет символ новой строки, называемый PHP_EOL
. Эта константа задана для строки строки новой строки для машины, на которой работает PHP ( \r\n
для Windows и \n
для всего остального). Эта константа не очень полезна для веб-страниц и ее следует избегать для вывода HTML или для записи большинства текстовых файлов. Это становится ОЧЕНЬ полезным, когда мы переходим к выводам командной строки из приложений PHP, потому что это позволит вашему приложению выводить на терминал Window согласованным образом во всех поддерживаемых операционных системах.
Если вы хотите, чтобы ваши PHP-приложения работали с любого сервера, на котором они размещены, две самые большие вещи, которые нужно помнить, – это то, что вы всегда должны просто использовать \n
если это не конечный вывод (в этом случае вы используете PHP_EOL), и вы также должны ВСЕГДА использовать /
для разделителя пути (не \
).
Еще более длинное объяснение:
Приложение может использовать любые концы строк, которые ему нравятся, независимо от стиля окончания строки ОС по умолчанию. Если я хочу, чтобы мой текстовый редактор печатал новую строку каждый раз, когда он сталкивается с периодом, который не сложнее, чем использование \n
для представления новой строки, потому что я интерпретирую текст по мере его отображения. IOW, я возился с измерением ширины каждого символа, поэтому он знает, где отображать следующее, поэтому очень просто добавить оператор, говорящий, что если текущий символ является периодом, тогда выполните действие новой строки (или если оно a \n
затем отображает период).
Помимо нулевого терминатора, код символа не является священным, и когда вы пишете текстовый редактор или средство просмотра, вы отвечаете за перевод битов в свой файл на глифы (или возврат каретки) на экране. Единственное, что отличает контрольный символ, такой как новая строка от других символов, состоит в том, что большинство наборов шрифтов не включают их (что означает, что они не имеют визуального представления).
При этом, если вы работаете на более высоком уровне абстракции, вы, вероятно, не создаете свои собственные элементы управления текстовыми полями. Если это так, то вы застряли с любой линией, заканчивающейся тем, что контроль дает вам доступ. Даже в этом случае легко определить стиль окончания строки любой строки и сделать преобразование, прежде чем загружать текст в элемент управления, а затем отменить его, когда вы прочитаете этот элемент управления. Это означает, что если вы являетесь разработчиком настольных приложений, и ваше приложение не распознает \n
как новую строку, это не очень дружелюбное приложение, и у вас действительно нет оправдания, потому что нетрудно сделать правильный путь , Это также означает, что кто бы написал «Блокнот», ему было бы стыдно за себя, потому что это очень легко сделать намного лучше, и так много людей страдают, используя его каждый день.
Если вы программируете на PHP, полезно разделить строки на \n
а затем trim()
каждую строку (при условии, что вам небезразличен пробел), чтобы дать вам «чистую» строку независимо.
foreach($line in explode("\n", $data)) { $line = trim($line); ... }
Для php \ n должен работать для вас!