PHP的nl2br无法正常工作

Che*_*ong 1 php carriage-return

例如,我有:

Lorem Ipsum

Dolor Sir Amet
Run Code Online (Sandbox Code Playgroud)

作为内容$s。现在,如果我打印的结果htmlspecialchars(nl2br($s))是:

Lorem Ipsum<br />
<br />
Dolor Sir Amet
Run Code Online (Sandbox Code Playgroud)

虽然我想要的结果是:

Lorem Ipsum<br /><br /> Dolor Sir Amet
Run Code Online (Sandbox Code Playgroud)

为什么nl2br即使已插入,也不会删除回车符<br />?还是如何正确使用nl2br来正确除去回车?因为这破坏了我的SQL。我在Windows 7中的Apache上运行PHP。谢谢。

小智 5

要替换所有换行符,<br />您应该使用扩展功能,
这是一个示例:

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

每个操作系统的换行符都有不同的ASCII字符:

windows = \ r \ n
unix = \ n
mac = \ r