Php .serialize()方法是否将\r添加到换行符?
根据这个答案,我认为Php .serialize()方法是否将\r添加到换行符?,php,jquery,Php,Jquery,根据这个答案,我认为json\u encode是否将换行符存储为\n或\r\n取决于操作系统。然而,我今天发现,我可以在同一个操作系统(Ubuntu)上使用json\u encode生成这两个输出 以这个例子为例 <form id='form'> <textarea id='amd' name='stuff'></textarea> </form> <button id='lol'>Press Me</bu
json\u encode
是否将换行符存储为\n
或\r\n
取决于操作系统。然而,我今天发现,我可以在同一个操作系统(Ubuntu)上使用json\u encode
生成这两个输出
以这个例子为例
<form id='form'>
<textarea id='amd' name='stuff'></textarea>
</form>
<button id='lol'>Press Me</button>
以及下面的ajax.php
$text = $_POST['stuff'];
file_put_contents('test.txt', json_encode($text));
现在进入以下内容
将在text.txt中写入以下内容
“这是一个\n故障”
但是,如果我将jQUery脚本中的数据属性更改为
data: $('#form').serialize()
然后我在text.txt
“这是一个\r\n故障”
为什么serialize()会将此附加的\r
生成到我的换行符\n?我甚至不用windows。所以答案很简单。jQueryserialize()
正在添加\r\n
,因为开发人员是这样编码的。您可以在中看到代码。它们将所有出现的/\r?\n/g
替换为\r\n
客户端和服务器都是Ubuntu?为什么是idk,但如果是这种情况,唯一的解决方案是:file\u put\u contents('test.txt',str\u replace('\r\n',PHP\u EOL,json\u encode($text))代码>@Mat是。我在ubuntu上使用Xampp,所以客户端和服务器甚至完全相同。我也在一个真正的Ubuntu服务器上用不同的Ubuntu和Win7客户端进行了尝试,结果是一样的。
data: $('#form').serialize()