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

\n против PHP_EOL против?

В большинстве случаев, как и для одного интерактивного веб-сайта, когда мы выводим несколько строк содержимого в браузер веб-клиента, на мой взгляд, <BR /> гораздо предпочтительнее, чем другие два: \n или PHP_EOL.

В противном случае нам нужно использовать "<pre></pre>" для обертывания выходного содержимого или использовать nl2br() для вставки <BR /> до \n, так как метка нескольких строк может вступить в силу в HTML. Как и в следующем примере.

$fruits = array('a'=>'apple', 'b'=>'banana', 'c'=>'cranberry');

// Multiple lines by \n
foreach( $fruits as $key => $value ){
    echo "$key => $value \n" ;
}

// Multiple lines by PHP_EOL
reset( $fruits );
while ( list($key, $value) = each( $fruits ) ){
    echo ("$key => $value" . PHP_EOL);
}

// Multiple lines by <BR />
reset( $fruits );
while ( list($key, $value) = each( $fruits ) ){
    echo ("$key => $value <BR />");
}

Некоторые считают, что PHP_EOL полезно при записи данных в файл, например, в файл журнала. Он будет создавать разрывы строк независимо от вашей платформы.

Тогда, мой вопрос, когда мы используем \n? Какая разница между \n и PHP_EOL и <BR />? Может ли у любого органа есть большой список каждого из их плюсов и минусов?

4b9b3361

Ответ 1

DOS, Unix и Mac (pre-OS X и OS X) используют разные символы или комбинации символов для представления "перейти к следующей строке".

  • DOS - Использует CR + LF (что ASCII 13, за которым следует ASCII 10 или \r\n), чтобы представить новую строку.

  • Unix - использует LF (что ASCII 10 или \n) для представления новой строки.

  • Mac (pre-OS X) - использует CR (что ASCII 13 или \r) для представления новой строки.

  • Mac (OS X) - как Unix, использует LF для представления новой строки.

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

Все они отображаются как одно пространство внутри браузера, так как браузеры сворачивают пробелы в пространство отображения для целей отображения (если вы не используете <pre>, как вы упомянули, или CSS, который изменяет поведение пробелов). Здесь <br> входит, как вы уже упоминали, который преобразует эти \n новые строковые символы в <br>, чтобы они отображали разрывы строк на экране HTML.

Ответ 2

< ш >

<br> используется только при разделении текста. Вы можете видеть, что это используется для разделения элементов в html-документе, но это не является его целью, поскольку расстояние между макетами должно быть достигнуто с помощью CSS, например margin. Здесь приличный вариант использования:

<p>This <br> is <br> some <br> text.</p>

Я обычно разбиваю свой текст на строки-строки для удобочитаемости, поэтому я не хочу, чтобы в этом документе отображались строки. В этом случае необходим тег <br>.

CSS whitespace, <pre>

Элемент html <pre> - это элемент, который по умолчанию использует правило CSS white-space: pre;, так что пробел документа отображается внутри этого элемента. Как правило, только одно пространство будет отображаться независимо от количества пробелов в документе. Очень хорошее использование этого стиля для кодовых блоков. Если я напишу блок кода, я, естественно, буду размещать его, как я намереваюсь, и не особо хочу обернуть тег <p> вокруг каждой строки (это не семантично), и я не хочу, чтобы мой код меня лил <br>. Хуже того, там отступ кода! whitespace: pre здесь имеет большой смысл.

<pre>
function foo() {
  //etc
}
</pre>

\r,\n, PHP_EOL

В зависимости от платформы, на которой запущен ваш PHP-код, вам нужно отобразить строку с \r, \n\ или оба \r\n. PHP_EOL будет автоматически выбирать для вас, так что это самый динамичный подход.

Ответ 3

Нет смысла сравнивать строку linebreak <br> с фактическими текстовыми прерываниями строк. <br> - это только строка в рендеринге веб-браузера веб-сайта, тогда как \n и PHP_EOL являются актуальными, для строк исходного кода.

Как вы сами отметили, PHP_EOL будет работать независимо от платформы и поэтому также предпочтителен над \n. Первоначально \n был только стандартным разрывом строки в UNIX, тогда как Macintosh использовал \r, а Windows/DOS использовали комбинацию из двух: \r\n. Однако при использовании PHP_EOL вам вообще не нужно беспокоиться о платформе.

В настоящее время большинство систем и редакторов достаточно толерантны, чтобы принять любой рубеж, который вы решили использовать, но использование правильного, очевидно, предпочтительнее и наиболее легко достигается с помощью PHP_EOL, поэтому нет причин не использовать его.

Ответ 4

Мне нужно запустить скрипты на cron и сохранить результаты в файле журнала. Но иногда я запускаю script в своем браузере. Поэтому я использую следующий тест, чтобы использовать правильный конец строки char:

<?php
$eol = (isset($_SERVER['SHELL'])) ? PHP_EOL : "<br />";
echo "DISCOVER". $eol;
?>

Ответ 5

Вы можете создать функцию с кодом Flavio, которая всегда устанавливает правильную новую строку, независимо от того, запускаете ли вы ее в оболочке или в браузере:

<?php
function nl($string) {
  if(isset($_SERVER['SHELL'])) return preg_replace('/\<br(\s*)?\/?\>/i', PHP_EOL, $string);
  return nl2br($string);
}


print nl("One\nTwo<br>Three\r\nFour<br />Five
Six" . PHP_EOL);
?>