PHP Conference Japan 2024

nl2br

(PHP 4, PHP 5, PHP 7, PHP 8)

nl2br在字符串中所有换行符前插入 HTML 换行符

描述

nl2br(string $string, bool $use_xhtml = true): string

返回插入了 <br /><br>string,在所有换行符 (\r\n\n\r\n\r) 之前。

参数

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 />

参见

添加注释

用户贡献的注释 6 条注释

128
CGameProgrammer at gmail dot com
19 年前
务必记住,此函数不会将换行符替换为 <br> 标记。相反,它在每个换行符之前插入一个 <br> 标记,但它仍然保留换行符本身!这导致我在编写一个函数时遇到了问题——我忘记了换行符仍然被保留。

如果您不希望出现换行符,请执行以下操作

<?php
$Result
= str_replace( "\n", '<br />', $Text );
?>
92
ngkongs at gmail dot com
17 年前
将所有换行符替换为 <br />
最佳解决方案(IMO)是

<?php
function nl2br2($string) {
$string = str_replace(array("\r\n", "\r", "\n"), "<br />", $string);
return
$string;
}
?>

因为每个操作系统都有不同的 ASCII 字符用于换行
Windows = \r\n
Unix = \n
Mac = \r

对我来说效果很好
46
N/A
16 年前
这是一个更简单的

<?php
/**
* 将 BR 标记转换为 nl
*
* @param string 要转换的字符串
* @return string 已转换的字符串
*/
function br2nl($string)
{
return
preg_replace('/\<br(\s*)?\/?\>/i', "\n", $string);
}
?>

享受
18
fquffio at live dot it
10 年前
从 PHP 4.3.10 和 PHP 5.0.2 开始,这应该是用换行符和回车符替换 <br /> 和 <br> 标记的最正确方法。
<?php
/**
* 将 BR 标记转换为换行符和回车符。
*
* @param string 要转换的字符串
* @return string 已转换的字符串
*/
function br2nl ( $string )
{
return
preg_replace('/\<br(\s*)?\/?\>/i', PHP_EOL, $string);
}
?>
(请注意,这是对该函数的少量修改:https://php.net/nl2br#86678 )

您可能还想“特定于平台”,因此此函数可能会有所帮助
<?php
/**
* 将 <br> 标签转换为换行符和回车符。
*
* @param string 要转换的字符串
* @param string 用作行分隔符的字符串
* @return 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; // 检查提供的 $separator 是否有效。
return preg_replace('/\<br(\s*)?\/?\>/i', $separator, $string);
}
?>
13
aabaev
6 年前
双引号 !== 单引号

php > echo nl2br('\r\n');
\r\n
php > echo nl2br("\r\n");
<br />
8
Anders Norrbring
18 年前
看到所有关于 br2nl 函数的建议,我也可以看到,没有一个能够处理书写松散的 HTML 换行符.. 我们知道,用户无法保证编写良好的代码,并且大小写混合并不罕见。

我认为这段小代码可以解决大多数问题,包括 XHTML 样式和 HTML,甚至混合大小写,如 <Br> <bR /> 以及 <br > 或 <br />。

<?php
function br2nl($text)
{
return
preg_replace('/<br\\s*?\/??>/i', '', $text);
}
?>
To Top