向 html 文本区域添加换行符

Posted

技术标签:

【中文标题】向 html 文本区域添加换行符【英文标题】:Add a line break to a html text area 【发布时间】:2014-03-31 05:55:32 【问题描述】:

我试图在运行时将换行符添加到文本区域 (\n),但不是显示为换行符,而是将文本区域物理放入 \n。 我已经阅读了有关此的各种主题 Link 1 和 link 2 没有任何成功。 这可能取决于文本区域内数据的更新方式,但这无关紧要。我的数据是通过 json 从 php 文件中引入并通过 jQuery 显示的

json 响应示例:

"error":"2","err_msg":"","data":"<p class=\"left\">Aligned left text<\/p><br>Sub text <br>"

然后应该显示文本区域中的文本:

[left]Aligned left text[/left]
Sub text

但是在我的页面上我得到了

[left]Aligned left text[/left]\nSub text

我有 php 函数可以将相关的 html 标签转换为我想要的,但由于某种原因换行符不起作用

$string = preg_replace_callback('(\<p class="left"\>(.*?)\</p\>)is', function($matches)
   $txt = $matches[1];
   return '[left]'.$txt.'[/left]\n';
, $string);

$string = str_replace('<br>','\n',$string);

die(json_encode(array('error' => '2', 'err_msg' => '', 'data' => $string)));

有更多的格式和不同的标签,但只有换行符不起作用。

此更改应显示在文本区域中

$('#edit').val(json.data)
<textarea id="edit" ></textarea>

【问题讨论】:

看起来您正在将正确的 HTML 换行符 () 替换为不正确的换行符 ('\n')。 没有同样的问题没有换行符它只是显示我希望新行开始的地方 你想在哪里显示被替换的字符串? 【参考方案1】:

尝试使用 HTML 实体进行换行 &amp;#10; 和回车 &amp;#13;

【讨论】:

【参考方案2】:

不要使用用撇号封装的字符串文字,试试:

$string = str_replace("&lt;br&gt;", "\n", $string)

PHP 中'this string'"this string" 之间存在显着差异;在 PHP 中使用撇号封装你的字符串会将\n 视为\n 而不是chr(10)

【讨论】:

以上是关于向 html 文本区域添加换行符的主要内容,如果未能解决你的问题,请参考以下文章

禁用 HTML 文本区域中的换行符

修改 HTML 的文本区域 - 呈现换行符

如何阻止 Chrome 在我的文本区域中添加额外的换行符?

在 woocommerce 的自定义文本区域中保留用户换行符

无法在 Coach BPM 8.5.7 的输出文本区域中放置换行符

将文本附加到带有换行符的文本区域