在文本框中捕获换行符(换行、回车)字符

19

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

这是否可行?

我试过在textarea的CSS上设置white-space:pre,但还不够。

4个回答

34
看一下nl2br()函数。它应该正好符合你的需求。

9
nl2br()函数可以帮助你实现这一点:
然而,该函数只添加br标签,而不会真正删除换行符——通常这并不是问题,但如果你想完全删除它们并捕获回车符,你应该使用str_replacepreg_replace
我认为str_replace会稍微快一些,但我没有进行基准测试;
$val = str_replace( array("\n","\r","\r\n"), '<br />', $val );

或者
$val = preg_replace( "#\n|\r|\r\n#", '<br />', $val );

5
如果你要使用str_replacepreg_replace,你应该将"\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 );

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']);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接