保存文本区域为会话和echo,没有可见的换行格式


Save textarea as session and echo without visible line-break format

如果设置为:

,则将多行会话字符串回显到textarea中。
<textarea><?php if (isset($_SESSION['saved_text'])) { echo nl2br($_SESSION['saved_text']); } ?></textarea>

:

"Line 1
Line 2
Line 3"

当它回显会话到文本区域时它返回:

"Line 1'r'nLine 2'r'nLine 3"

但是我想要它在字符串中的格式,使用换行符,但不显式地将它们显示为"'n"等。我该怎么做呢?

您不需要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()用于此

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