捕获textarea中的换行符(换行符,换行符)

loc*_*ock 19 html php textarea line-breaks

我有一个带有a的表单,<textarea>我想在服务器端捕获该textarea中的任何换行符,并用a替换它们<br/>.

那可能吗?

我试着设置white-space:pretextarea的CSS,但它仍然是不够的.

小智 34

看看这个nl2br()功能.它应该完全符合你的要求.


小智 9

nl2br()存在这样的函数:

但是,这个函数添加了br标签,但实际上并没有删除新行 - 这通常不是问题,但如果你想完全剥离它们并捕获回车,你应该使用一个str_replace或者preg_replace

我认为str_replace会稍微快点但我还没有基准测试;

$val = str_replace( array("\n","\r","\r\n"), '<br />', $val );
Run Code Online (Sandbox Code Playgroud)

要么

$val = preg_replace( "#\n|\r|\r\n#", '<br />', $val );
Run Code Online (Sandbox Code Playgroud)


小智 5

如果您打算使用str_replace或者preg_replace,您应该将数据放在"\r\n"数组的开头,否则\r\n序列将被转换为两个<br/>标记(因为\r将匹配,然后\n匹配).

例如:

$val = str_replace( array("\r\n", "\n","\r"), '<br />', $val );
Run Code Online (Sandbox Code Playgroud)

要么

$val = preg_replace( "#\r\n|\n|\r#", '<br />', $val );
Run Code Online (Sandbox Code Playgroud)