nl2br
(PHP 4, PHP 5, PHP 7, PHP 8)
nl2br — 改行文字の前に HTML の改行タグを挿入する
説明
string
に含まれるすべての改行文字 (\r\n
、
\n\r
、\n
および \r
)
の前に <br />
あるいは <br>
を挿入して返します。
パラメータ
string
-
入力文字列。
use_xhtml
-
XHTML 準拠の改行を使うか否か。
戻り値
変更後の文字列を返します。
例
例1 nl2br() の使用法
<?php
echo nl2br("foo isn't\n bar");
?>
上の例の出力は以下となります。
foo isn't<br /> bar
例2 use_xhtml
パラメータを使い、妥当な HTML 形式のマークアップを生成する
<?php
echo nl2br("Welcome\r\nThis is my HTML document", false);
?>
上の例の出力は以下となります。
Welcome<br> This is my HTML document
例3 さまざまな改行文字
<?php
$string = "This\r\nis\n\ra\nstring\r";
echo nl2br($string);
?>
上の例の出力は以下となります。
This<br /> is<br /> a<br /> string<br />
参考
- htmlspecialchars() - 特殊文字を HTML エンティティに変換する
- htmlentities() - 適用可能な文字を全て HTML エンティティに変換する
- wordwrap() - 指定した文字数で文字列を分割する
- str_replace() - 検索文字列に一致したすべての文字列を置換する
+add a note
User Contributed Notes 6 notes
CGameProgrammer at gmail dot com ¶
19 years ago
It's important to remember that this function does NOT replace newlines with <br> tags. Rather, it inserts a <br> tag before each newline, but it still preserves the newlines themselves! This caused problems for me regarding a function I was writing -- I forgot the newlines were still being preserved.
If you don't want newlines, do:
<?php
$Result = str_replace( "\n", '<br />', $Text );
?>
ngkongs at gmail dot com ¶
17 years ago
to replace all linebreaks to <br />
the best solution (IMO) is:
<?php
function nl2br2($string) {
$string = str_replace(array("\r\n", "\r", "\n"), "<br />", $string);
return $string;
}
?>
because each OS have different ASCII chars for linebreak:
windows = \r\n
unix = \n
mac = \r
works perfect for me
N/A ¶
16 years ago
Here's a more simple one:
<?php
/**
* Convert BR tags to nl
*
* @param string The string to convert
* @return string The converted string
*/
function br2nl($string)
{
return preg_replace('/\<br(\s*)?\/?\>/i', "\n", $string);
}
?>
Enjoy
fquffio at live dot it ¶
10 years ago
Starting from PHP 4.3.10 and PHP 5.0.2, this should be the most correct way to replace <br /> and <br> tags with newlines and carriage returns.
<?php
/**
* Convert BR tags to newlines and carriage returns.
*
* @param string The string to convert
* @return string The converted string
*/
function br2nl ( $string )
{
return preg_replace('/\<br(\s*)?\/?\>/i', PHP_EOL, $string);
}
?>
(Please note this is a minor edit of this function: http://php.net/nl2br#86678 )
You might also want to be "platform specific", and therefore this function might be of some help:
<?php
/**
* Convert BR tags to newlines and carriage returns.
*
* @param string The string to convert
* @param string The string to use as line separator
* @return string The converted string
*/
function br2nl ( $string, $separator = PHP_EOL )
{
$separator = in_array($separator, array("\n", "\r", "\r\n", "\n\r", chr(30), chr(155), PHP_EOL)) ? $separator : PHP_EOL; // Checks if provided $separator is valid.
return preg_replace('/\<br(\s*)?\/?\>/i', $separator, $string);
}
?>
aabaev ¶
6 years ago
double quotes !== single quotes
php > echo nl2br('\r\n');
\r\n
php > echo nl2br("\r\n");
<br />
Anders Norrbring ¶
18 years ago
Seeing all these suggestions on a br2nl function, I can also see that neither would work with a sloppy written html line break.. Users can't be trusted to write good code, we know that, and mixing case isn't too uncommon.
I think this little snippet would do most tricks, both XHTML style and HTML, even mixed case like <Br> <bR /> and even <br > or <br />.
<?php
function br2nl($text)
{
return preg_replace('/<br\\s*?\/??>/i', '', $text);
}
?>