在html文本区域添加换行符

时间:2014-02-27 16:37:12

标签: javascript php jquery html json

我试图在运行时向文本区域添加换行符(\ n),但不是显示为换行符,而是将文本区域物理放入\ n。 我已经阅读了关于此的各种主题 Link 1link 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>

2 个答案:

答案 0 :(得分:3)

尝试将HTML实体用于换行&#10;并回车&#13;

答案 1 :(得分:2)

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

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

PHP中'this string'"this string"之间存在显着差异;使用撇号将您的字符串封装在PHP中将\n字面上视为{{​​1}}而不是\n