Подтвердить что ты не робот

Является ли новая строка =\n OR\r\n?

Я видел, что многие разработчики используют разные методы для разбиения строки на новые строки, но я смущен, что является правильным: \r\n ИЛИ \n только?

4b9b3361

Ответ 1

\n используется для Unix-систем (включая Linux и OSX).

\r\n в основном используется в Windows.

\r используется на старых компьютерах.

Ответ 2

Данный ответ далек от завершения. На самом деле, это настолько далекое от завершения, что оно побуждает читателя поверить, что этот ответ зависит от ОС, когда он не является. Это также не то, что зависит от языка программирования (как предполагали некоторые комментаторы). Я собираюсь добавить дополнительную информацию, чтобы сделать это более понятным. Во-первых, давайте представим список текущих новых вариаций строки (как, например, с 1999 года):

  • \r\n используется только в Windows Notepad, командной строке DOS, большей части Windows API и некоторых (старых) приложениях Windows.
  • \n используется для всех других систем, приложений и Интернета.

Вы заметите, что я поставил большинство приложений Windows в группу \n, которые могут быть слегка противоречивыми, но прежде чем вы не согласны с этим утверждением, возьмите текстовый файл в формате UNIX и попробуйте его в 10 веб-дружественных приложениях Windows по вашему выбору (которые не указаны в моих исключениях выше). Какой процент из них справился с этим просто отлично? Вы обнаружите, что они (практически) реализуют автоматическое обнаружение окончаний строк или просто используют \n, потому что, хотя Windows может использовать \r\n, Интернет использует \n. Поэтому для приложений рекомендуется использовать только \n, если вы хотите, чтобы ваш выход был дружественным к Интернету.

PHP также определяет символ новой строки, называемый PHP_EOL. Эта константа задана для строки строки новой строки для машины, на которой работает PHP (\r\n для Windows и \n для всего остального). Эта константа не очень полезна для веб-страниц и ее следует избегать для вывода HTML или для записи большинства текстовых файлов. Это становится ОЧЕНЬ полезным, когда мы переходим к выводам командной строки из приложений PHP, потому что это позволит вашему приложению выводить на терминал Window согласованным образом во всех поддерживаемых операционных системах.

Если вы хотите, чтобы ваши PHP-приложения работали с любого сервера, на котором они размещены, две самые важные вещи, которые следует помнить, - это то, что вы всегда должны просто использовать \n, если только это не вывод терминала (в этом случае вы используете PHP_EOL) и, вы также должны ВСЕГДА использовать / для своего разделителя путей (не \).

Еще более длинное объяснение:

Приложению может быть предложено использовать любые концы строк, которые ему нравятся, независимо от стиля окончания строки ОС по умолчанию. Если я хочу, чтобы мой текстовый редактор печатал новую строку каждый раз, когда он сталкивается с периодом, который не сложнее, чем использование \n для представления новой строки, потому что я интерпретирую текст по мере его отображения. IOW, я возился с измерением ширины каждого символа, поэтому он знает, где отображать следующее, поэтому очень просто добавить оператор, говорящий, что если текущий char является периодом, то выполните действие новой строки (или если это \n, а затем отображает период).

Помимо нулевого терминатора, код символа не является священным, и когда вы пишете текстовый редактор или средство просмотра, вы отвечаете за перевод битов в свой файл на глифы (или возврат каретки) на экране. Единственное, что отличает управляющий символ, такой как символ новой строки от других символов, состоит в том, что большинство наборов шрифтов не включают их (что означает, что они не имеют визуального представления).

При этом, если вы работаете на более высоком уровне абстракции, вы, вероятно, не создаете свои собственные элементы управления текстовыми полями. Если это так, то вы застряли с любой линией, заканчивающейся тем, что контроль дает вам доступ. Даже в этом случае легко определить стиль окончания строки любой строки и сделать преобразование, прежде чем загружать текст в элемент управления, а затем отменить его, когда вы прочитаете этот элемент управления. Это означает, что если вы являетесь разработчиком настольного приложения, и ваше приложение не распознает \n как новую строку, это не очень дружелюбное приложение, и у вас действительно нет оправдания, потому что нетрудно сделать это правильно путь. Это также означает, что любой, кто написал "Блокнот", должен стыдиться самого себя, потому что очень легко сделать гораздо лучше, и так много людей страдают от его использования каждый день.

Ответ 3

Если вы программируете на PHP, полезно разделить строки на \n, а затем trim() каждую строку (при условии, что вы не заботитесь о пробеле), чтобы дать вам "чистую" строку независимо.

foreach($line in explode("\n", $data))
{
    $line = trim($line);
    ...
}