如何在预填充的文本区域中将 <br /> 转换为换行符

Posted

技术标签:

【中文标题】如何在预填充的文本区域中将 <br /> 转换为换行符【英文标题】:How to convert <br /> to newline on Pre-populated textarea 【发布时间】:2012-11-01 08:35:45 【问题描述】:

我遇到了&lt;BR /&gt; 标签出现在预填充文本区域表单内的问题(显然没有中断)。所以这些break标签需要在textarea内转换成/n。正在通过 URL 检索此预填充文本,该 URL 似乎也包含中断标记。

基本上发生了什么以及我需要什么:

我必须从前一页(最初是从数据库中提取)中获取一个文本块,并将该文本块加载到表单提交页面上的 textarea 字段中。用户然后填写表单的其余字段并提交表单,然后此信息将存储到数据库中的特定表中。

为了让文本块在第一页上正确显示,我必须使用nl2br 来让这部分在页面上正确中断。显然,现在它正在输出带有换行符而不是换行符的文本。

这意味着当您单击链接以填充下一页上的表单时,该链接中包含中断标记,这些标记依次显示在下一页的 textarea 字段内以及 URL 中。

我很困惑我需要做什么才能再次用/n 替换那些&lt;BR /&gt;。似乎我可以使用str_replacepreg_replace,但我还没有找到一个示例来说明如何将其中任何一个与以下内容结合使用:

<textarea rows="10" cols="50"><? if(isset($_GET['text-property'])) echo $_GET['text-property']; ?></textarea>

请记住,我仍在学习 php,所以如果可能的话,我真的需要细节,最好是示例。

谢谢!

【问题讨论】:

【参考方案1】:

你需要使用preg_replace

<textarea rows="10" cols="50"><? if(isset($_GET['text-property'])) echo preg_replace('/<br[^>]*?>/si', '\n',$_GET['text-property']); ?></textarea>

Demo

【讨论】:

谢谢,就将换行符转换为新行而言,这确实有效。但现在它只是显示“/n”而不是 BR,它实际上仍然没有将文本中断到下一行。知道如何真正打破吗? 其实,没关系...我通过一个小改动就搞定了。我在你有'/n'的地方使用了PHP_EOL。所以它现在看起来像 ""

以上是关于如何在预填充的文本区域中将 <br /> 转换为换行符的主要内容,如果未能解决你的问题,请参考以下文章

如何在sql数据库中将键盘上的“Enter”保存为<br> [重复]

文本区域中的换行符

MVC创建表单加载时如何用一些数据填充文本区域?

格式化填充的文本区域、回车符、换行符和 HAML

获取动态生成的文本区域的值

带有上传附件选项 HTML/JQuery 的文本区域