2013-03-19 58 views
1

我有一个文本区域,允许用户输入多行文本。我想强制文本框中的所有内容自动加倍间隔。我使用nl2br输出文本并显示间距。自动双倍空间文本区域

比方说用户类型:

红色
蓝色
绿色

我想nl2br函数输出

红色

蓝色

绿色

我还需要能够处理双重空间(即,如果用户已经放入双倍空间,我不想要更多。

关于如何制作这个的任何想法?我宁愿在允许用户输入文字的页面中进行操作。谢谢!

回答

3

使用str_replace()PHP_EOL

$str = 'red 
blue 
green'; 

$str = str_replace(PHP_EOL, '<br><br>', $str); 
echo $str; 

编辑: 使用正则表达式:

$str = 'red 

blue 



green 
blue'; 

$str = preg_replace(array('/(\r?\n)+/', '/\r?\n/'),array(PHP_EOL,'<br><br>'), $str); 
echo $str; 
+1

感谢 - 需要更新我的问题问这是否会处理双空格 – Brandon 2013-03-19 10:32:18

+0

@Brandon检查我的更新答案:) – HamZa 2013-03-19 10:41:11

+0

您复制'(即用户如果以双倍行距已经提出,我不想要更多。) \ r?'我认为你也需要它'\ n?' – 2013-03-19 10:43:05

0
$str = nl2br(str_replace(PHP_EOL, '<br><br>', $str)); 
echo $str; 
+0

没有理由把它换成'nl2br()'。 'str_replace()'已经将它们删除后没有新行。 – JJJ 2013-03-19 10:51:02

0
$str = str_replace('<br />', '<br /><br />', nl2br($str)); 

这将使<br />标签的所有行结尾的事后双该米