В большинстве случаев, как и для одного интерактивного веб-сайта, когда мы выводим несколько строк содержимого в браузер веб-клиента, на мой взгляд, < <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 />
?? Может ли любой орган иметь большой список каждого из своих плюсов и минусов?
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
– автоматически выбрать правильный символ для платформы, чтобы ваши новые линии не PHP_EOL
от платформы.
Все они отображаются как одно пространство внутри браузера, так как браузеры сворачивают пробелы в пространство отображения для целей отображения (если вы не используете <pre>
как вы упомянули, или CSS, который изменяет поведение пробелов). Вот где, как вы упомянули, входит приложение, которое преобразует эти \n
новые строковые символы в так, чтобы они отображали разрывы строк на экране HTML.
<br>
используется только при разделении текста. Вы можете видеть, что это используется для разделения элементов внутри html-документа, но это не является его целью, поскольку расстояние между макетами должно быть достигнуто с помощью CSS, такого как margin
. Вот приличный вариант использования:
<p>This <br> is <br> some <br> text.</p>
Я обычно разбиваю свой текст на строки, чтобы читать, поэтому мне не хотелось бы, чтобы строки были отображены в документе. Это то, что нужно использовать тег.
Элемент html <pre>
– это элемент, который по умолчанию использует правило CSS white-space: pre;
так что пробел документа отображается внутри этого элемента. Как правило, только одно пространство будет отображаться независимо от количества пробелов в документе. Очень хорошее использование этого стиля для кодовых блоков. Если я напишу блок кода, я, естественно, буду размещать его, как я намереваюсь, и не особенно забочусь об обертывании <p>
вокруг каждой строки (это не семантично), и я не хочу засорять мой код с помощью <br>
. Еще хуже, есть отступ кода! whitespace: pre
имеет много смысла здесь.
<pre> function foo() { //etc } </pre>
В зависимости от платформы, с которой выполняется ваш PHP-код, вам нужно отобразить строку с \r
, \n\
или обоими \r\n
. PHP_EOL
автоматически выберет для вас, так что это самый динамичный подход.
Нет смысла сравнивать разметку строки HTML с фактическими текстовыми прерываниями строк. <br>
– это только строка в рендеринге браузера веб-сайта, тогда как \n
и PHP_EOL
являются действительными, PHP_EOL
исходного кода.
Как вы сами PHP_EOL
, PHP_EOL
будет работать независимо от платформы и поэтому также предпочитается над \n
. Первоначально, \n
был только стандартным разрывом строки в UNIX, тогда как Macintosh использовал \r
а Windows / DOS использовали комбинацию из двух: \r\n
. Однако при использовании PHP_EOL
вам вообще не нужно беспокоиться о платформе.
В настоящее время большинство систем и редакторов достаточно толерантны, чтобы принять любой рубеж, который вы решили использовать, но использование правильного, очевидно, предпочтительнее и наиболее легко достигается с помощью PHP_EOL
, поэтому нет причин не использовать его.
Я должен запускать скрипты в cron и сохранять результаты в файле журнала. Но иногда я запускаю сценарий в своем браузере. Поэтому я использую следующий тест, чтобы использовать правильный конец строки:
<?php $eol = (isset($_SERVER['SHELL'])) ? PHP_EOL : "<br />"; echo "DISCOVER". $eol; ?>
Вы можете создать функцию с кодом 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); ?>