John Yin John Yin - 1 year ago 120
PHP Question

\n vs. PHP_EOL vs. <br>?

In most cases, as for one interactive website, when we output multiple lines of contents to web client browser, in my opinion,

<BR />
is much more preferable than other two:
\n
or
PHP_EOL
.

Else, we need to use "
<pre></pre>
" to wrap the output content or use
nl2br()
to insert
<BR />
before
\n
so as the multiple line mark can take effect in HTML. Like following example.

$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 />");
}


Some people believe
PHP_EOL
is useful when writing data to a file, example a log file. It will create line breaks no matter whatever your platform.

Then, my question is when we use
\n
? What's the difference between
\n
and
PHP_EOL
, and
<BR />
? Could any body have a big list of each of their pros and cons?

Answer Source

DOS, Unix, and Mac (pre-OS X and OS X) all use different characters or character combinations to represent "go to the next line."

  • DOS - Uses a CR+LF (that's ASCII 13 followed by an ASCII 10, or \r\n) to represent a new line.

  • Unix - Uses an LF (that's ASCII 10, or \n) to represent a new line.

  • Mac (pre-OS X) - Uses a CR (that's ASCII 13, or \r) to represent a new line.

  • Mac (OS X) - Like Unix, uses an LF to represent a new line.

Therefore, when to use each one depends on what you're going for. If you're writing for a specific platform without the intention of portability, use the character or character combination to break lines that matter to that platform. The purpose of PHP_EOL is to automatically choose the correct character for the platform, so that your new lines are platform-independent.

All of these appear as a single space within a browser as browsers collapse whitespace into a display space for display purposes (unless you're using <pre> as you mentioned, or CSS that changes the behavior of whitespace). This is where <br> comes in, as you've mentioned, which will convert these \n new line characters into <br> so that they provide line breaks in HTML display.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download