根据这个答案https://stackoverflow.com/a/2115554/2311074我认为 json_encode
将换行符存储为 \n
还是 \r\n
取决于操作系统。然而,我今天发现我可以在同一操作系统 (Ubuntu) 上使用 json_encode
生成两个输出。
考虑这个例子
<form id='form'>
<textarea id='amd' name='stuff'></textarea>
</form>
<button id='lol'>Press Me</button>
使用 jQuery
$( document ).ready(function() {
$('#lol').click(function(){
var text = $('#amd').val();
$.ajax({
type: "POST",
url: ajax.php,
data: {stuff: text}
});
});
和下面的ajax.php
$text = $_POST['stuff'];
file_put_contents('test.txt', json_encode($text));
现在输入以下内容
将在text.txt
中写入以下内容
"this is a \nbreak up"
但是,如果我将 jQUery 脚本中的数据属性更改为
data: $('#form').serialize()
然后我在text.txt
中找到以下内容
"this is a \r\nbreak up"
为什么serialize()会在我的换行符处生成这个额外的\r
\n?我什至不使用 Windows。
最佳答案
所以答案很简单。 jQuery serialize()
正在添加 \r\n
,因为它的开发人员是这样编码的。您可以在 jquery github 中看到代码。它们将所有出现的 /\r?\n/g
替换为 \r\n
。
关于php - .serialize() 方法添加\r 到换行符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44268924/