从文本框输入中捕获换行符

20

我在我的HTML表单中有一个文本区域。如果用户在两个句子之间按下回车键,那么这些数据应该传递到我的PHP代码。

当前,如果用户输入:

Apple
Google
MS

我的 PHP 代码如下:

$str = $_POST["field"];

echo $str;

我得到了

Apple Google MS 

作为输出结果,我希望输出结果像这样

Apple
Google
MS

我该怎么办?

3个回答

45

尝试使用nl2br()代替:

echo nl2br($str);

2
更好了。不知道有一个专门用于此的内置函数。 - Thilo

3

$_POST["field"]获取的字符串中应该包含换行符。但是,如果将该字符串用作HTML输出,换行符将被视为空格。要强制换行,请使用preg_replace("/\n/", "<br />", $str)


那个 preg 会失败(没有定界符),而且为什么不直接使用 str_replace() - Alix Axel
没错 - 已经修复了。而且你的答案更好。不过,解释一下原因可能有助于更好地理解修复方法。 - Thilo

0
这是因为当您回显它时,它会显示为HTML。一个 \n 字符被解释为一个空格。如果您查看源代码,您将看到所需的输出。
要将 \n 转换为 <br>,请使用:
echo nl2br( $str );

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