19

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

那可能吗?

我尝试white-space:pretextarea's CSS 上进行设置,但仍然不够。

4

4 回答 4

34

看看nl2br()功能。它应该完全符合您的要求。

于 2008-11-14T03:35:41.417 回答
9

nl2br()功能的存在就是为了做到这一点:

然而,这个函数添加了 br 标签,但实际上并没有删除新行——这通常不是问题,但如果你想完全去除它们并捕获回车,你应该使用 astr_replacepreg_replace

我认为 str_replace 会稍微快一些,但我没有进行基准测试;

$val = str_replace( array("\n","\r","\r\n"), '<br />', $val );

或者

$val = preg_replace( "#\n|\r|\r\n#", '<br />', $val );
于 2008-11-14T16:03:40.173 回答
5

如果您要使用str_replaceor preg_replace,您可能应该将 the"\r\n"放在数组的开头,否则一个\r\n序列将被翻译成两个<br/>标签(因为\r将匹配,然后\n将匹配)。

例如:

$val = str_replace( array("\r\n", "\n","\r"), '<br />', $val );

或者

$val = preg_replace( "#\r\n|\n|\r#", '<br />', $val );
于 2009-02-24T20:59:27.470 回答
0

对于那些想要不依赖于答案的人nl2br()

$newList = ereg_replace( "\n",'|', $_POST['theTextareaContents']);

或(在这种情况下):

$newList = ereg_replace( "\n",'<br/>', $_POST['theTextareaContents']);

PHP 端:从 Textarea 字符串到 PHP 字符串

$newList = ereg_replace( "\n",'|', $_POST['theTextareaContents']);

PHP 端: PHP 字符串返回到 TextArea 字符串:

$list = str_replace('|', '&#13;&#10;', $r['db_field_name']);
于 2014-02-06T20:00:59.013 回答