How to remove the (\\)
backslash on a string? when using echo json_encode()
?
For example:
You do not want to delete it. Because JSON uses double quotes " " for strings, and your one returns
"$(\"#output\").append(\"
This is a test!<\/p>\")"
these backslashes escape these quotes
As HungryDB said the easier way for do that is:
$mystring = json_encode($my_json,JSON_UNESCAPED_SLASHES);
Have a look at your php version because this parameter has been added in version 5.4.0
json_encode documentation
I use the following to remove the slashes
echo json_decode($mystring, JSON_UNESCAPED_SLASHES);
Since PHP 5.4 there are constants which can be used by json_encode()
to format the json reponse how you want.
To remove backslashes use: JSON_UNESCAPED_SLASHES
. Like so:
json_encode($response, JSON_UNESCAPED_SLASHES);
View the PHP documentation for more constants and further information:
http://php.net/manual/en/function.json-encode.php
List of JSON constants:
http://php.net/manual/en/json.constants.php
I just figured out that json_encode
does only escape \n
if it's used within single quotes.
echo json_encode("Hello World\n");
// results in "Hello World\n"
And
echo json_encode('Hello World\n');
// results in "Hello World\\\n"
the solution that does work is this:
$str = preg_replace('/\\\"/',"\"", $str);
However you have to be extremely careful here because you need to make sure that all your values have their quotes escaped (which is generally true anyway, but especially so now that you will be stripping all the escapes from PHP's idiotic (and dysfunctional) "helper" functionality of adding unnecessary backslashes in front of all your object ids and values).
So, php, by default, double escapes your values that have a quote in them, so if you have a value of My name is "Joe"
in your DB, php will bring this back as
My name is \\"Joe\\"
.
This may or may not be useful to you. If it's not you can then take the extra step of replacing the leading slash there like this:
$str = preg_replace('/\\\\\"/',"\"", $str);
yeah... it's ugly... but it works.
You're then left with something that vaguely resembles actual JSON.