向 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 实体进行换行 &#10;
和回车 &#13;
。
【讨论】:
【参考方案2】:不要使用用撇号封装的字符串文字,试试:
$string = str_replace("<br>", "\n", $string)
PHP 中'this string'
和"this string"
之间存在显着差异;在 PHP 中使用撇号封装你的字符串会将\n
视为\n
而不是chr(10)
。
【讨论】:
以上是关于向 html 文本区域添加换行符的主要内容,如果未能解决你的问题,请参考以下文章
在 woocommerce 的自定义文本区域中保留用户换行符