php json_encode()在斜线[重复]之前自动添加斜杠

php json_encode()在斜线[重复]之前自动添加斜杠

问题描述:

This question already has an answer here:

I am storing my data in the form of json to the database. User can input with quotes, so i am manually adding slashes before the quotes. So my data becomes like this

array:8 [▼
  "buttonText" => "Large Button"
  "campName" => "Large\'s Button Test"
  "buttonSize" => "1"
]

But when i am converting it into json, the json_encode() function automatically added one more slash before my slash as

"{"buttonText":"Large Button","campName":"Large\\'s Button Test","buttonSize":"1"}"

Why the extra slash will be added, is there any option to prevent that

</div>

Why you do like this? Is totaly bad thing adding slashes manualy.

You can just generate JSON using arrays like:

$arr=array();

$arr['buttonText']="Large Button";
$arr['campName']="Large's Button Test";
$arr['buttonSize']=1;

echo json_encode($arr);

Just use json_encode() to store values and json_decode() to get values.

Here is diferent aproach:

$arr=array(
    'buttonText'=>"Large Button",
    'campName'=>"Large's Button Test",
    'buttonSize'=>1,
);

echo json_encode($arr);

JSON ENCODE - Manual

JSON DECODE - Manual

json_encode() adding slashes automaticaly and json_decode() remove it. You don't need to think about that. Just don't worry and be happy.

Extra slashes are added because that's what json_encode will do. See this documentation

In your case if you're encoding data to store in database, you don't need to manually add slashed. json_encode will take care of all escaping.