0

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

10
  • please provide more code. what you are experiencing usually happens due to implementing the json encode functions twice Commented Jun 27, 2017 at 7:26
  • 5
    I can't think of any scenario where you need to add slashes manually. I have the impression that you're trying to prevent SQL injection but you're instead corrupting data. Commented Jun 27, 2017 at 7:28
  • 2
    If you want to encode a value with a backslash, the correct JSON encoding for that is a doubled backslash. Why are you adding backslashes to your data in the first place?! Commented Jun 27, 2017 at 7:29
  • 1
    @ravisachaniya — That's about forward slashes, not backslashes. Commented Jun 27, 2017 at 7:30
  • 1
    "Why the extra slash will be added, is there any option to prevent that?" -- Do you want to prevent what? To prevent json_encode() create a valid JSON? Go ahead and remove the backslashes as you please. You will come back tomorrow with another question complaining that json_decode() cannot decode your malformed JSONs. Commented Jun 27, 2017 at 7:57

2 Answers 2

1

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.

Sign up to request clarification or add additional context in comments.

Comments

1

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.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.