我想回复一个带有换行符的textarea的输入我已经尝试过这样的东西来将<br/>
替换为新行,但它不起作用:
echo '<textarea>'.nl2br('test<br/>tes2<br/>').'</textarea>';
代码打印的内容与打印test<br/>tes2<br/>
答案 0 :(得分:4)
答案在nl2br php手册页上的用户评论中有关制作名为nl2br
的反向br2nl
函数...但简而言之,它只是:
preg_replace('/\<br(\s*)?\/?\>/i', "\n", $string);
您可以将其包装在一个小功能中并将其粘贴在您的功能工具箱中以供大量使用。但值得赞赏的是PHP.net手册页上评论的好人! http://php.net/manual/en/function.nl2br.php
答案 1 :(得分:1)
nl2br
函数添加br
s,其中换行符("\n"
或"\r"
)位于输入字符串中。您的输入字符串没有换行符。因此,它保持不变。
HTML在textarea
和pre
标记以及其他上下文中以不同方式处理换行符。在textarea
和pre
标记内,换行符实际上会破坏该行,因此它会在下一行继续。在其他情况下,换行符被视为任何其他空格字符,即所有字符缩小为单个空格。
如果您的用户输入来自textarea并将其输出到textarea,那么您不需要处理任何内容,它会自动存在。
<form method="POST">
<textarea name="text"><?= $_POST['text'] ?></textarea>
<button>submit</button>
</form>
试试吧!
当您在textarea外部输出文本时, nl2br
函数存在:
<p><?= nl2br($_POST['text']) ?></p>
<form method="POST">
<textarea name="text"></textarea>
<button>submit</button>
</form>