According to this answer https://stackoverflow.com/a/2115554/2311074 I thought that whether json_encode
stores a linebreak as \n
or \r\n
depends on the operating system. However I discovered today that I can generate both output with json_encode
on the same operating system (Ubuntu).
Consider the example
<form id='form'>
<textarea id='amd' name='stuff'></textarea>
</form>
<button id='lol'>Press Me</button>
with jQuery
$( document ).ready(function() {
$('#lol').click(function(){
var text = $('#amd').val();
$.ajax({
type: "POST",
url: ajax.php,
data: {stuff: text}
});
});
and the following ajax.php
$text = $_POST['stuff'];
file_put_contents('test.txt', json_encode($text));
now entering the following
will write the following content in text.txt
"this is a \nbreak up"
However, if I change the data attribut in the jQUery script to
data: $('#form').serialize()
then I find the following content in the text.txt
"this is a \r\nbreak up"
Why is serialize() generating this additional \r
to my linebreak \n? I am not even using windows.