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

这可能吗?

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

有帮助吗?

解决方案

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

其他提示

nl2br() 函数存在这样做:

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

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

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

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

如果您打算使用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 );

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

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

或(在这种情况下):

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

PHP方面:从Textarea字符串到PHP字符串

$list = str_replace('|', '&#13;&#10;', $r['db_field_name']);

PHP方面:PHP字符串返回TextArea字符串:

<*>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top