我有一个带有<textarea>
的表单,我希望在服务器端捕获该textarea中的任何换行符,并将其替换为<br/>
。
这可能吗?
我尝试在white-space:pre
的CSS上设置textarea
,但这还不够。
答案 0 :(得分:34)
查看nl2br()
功能。它应该完全符合您的要求。
答案 1 :(得分:9)
nl2br()
函数存在这样做:
但是,这个函数添加了br标签,但实际上并没有删除新行 - 这通常不是问题,但是如果你想完全剥离它们并捕获回车符,你应该使用{{3} }或str_replace
我认为str_replace会稍微快些但我没有基准测试;
$val = str_replace( array("\n","\r","\r\n"), '<br />', $val );
或
$val = preg_replace( "#\n|\r|\r\n#", '<br />', $val );
答案 2 :(得分:5)
如果您要使用str_replace
或preg_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 );
答案 3 :(得分: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('|', ' ', $r['db_field_name']);