我试图在运行时向文本区域添加换行符(\ 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>
答案 0 :(得分:3)
尝试将HTML实体用于换行
并回车
。
答案 1 :(得分:2)
不要使用用撇号封装的字符串文字,请尝试:
$string = str_replace("<br>", "\n", $string)
PHP中'this string'
和"this string"
之间存在显着差异;使用撇号将您的字符串封装在PHP中将\n
字面上视为{{1}}而不是\n
。