将textarea保存为session和echo,没有可见的换行符格式

时间:2014-07-01 18:28:57

标签: php session formatting

我将多线会话字符串回显到textarea中,如果它已设置:

<textarea><?php if (isset($_SESSION['saved_text'])) { echo nl2br($_SESSION['saved_text']); } ?></textarea>

如:

"Line 1
Line 2
Line 3"

当它将会话回显到textarea时,它会回来:

"Line 1\r\nLine 2\r\nLine 3"

但是我想知道它是如何在字符串中格式化的,包含换行符,但没有明确地将它们显示为&#34; \ n&#34;我该怎么做?

1 个答案:

答案 0 :(得分:1)

您不需要nl2br在textarea中显示新行。

<textarea><?php if (isset($_SESSION['saved_text'])) { echo $_SESSION['saved_text']; } ?></textarea>

这会奏效。 或者,如果文本包含一些特殊字符,则可以使用htmlspecialchars()

<textarea><?php if (isset($_SESSION['saved_text'])) { echo htmlspecialchars($_SESSION['saved_text']); } ?></textarea>

<强>更新

似乎\r\n在保存到DB之前已被转义,现在它们只是文本的字符,所以要删除它们,您需要将它们删除为可以使用str_ireplace()的字符< / p>

<textarea><?php if (isset($_SESSION['saved_text'])) { echo str_ireplace("\\r\\n", "\r\n", $_SESSION['saved_text']); } ?></textarea>