Bonjour,
j'ai un problème avec la fonction json_decode()
Un script JS envoie une String en post à un script PHP :
Voici ce qu'envoie JavaScript lorsque je vais :
Voici ce que reçoit mon script lorsque je fais un
Code : Sélectionner tout - Visualiser dans une fenêtre à part sstitres = [{"id":"0","timeStart":"0:00:04:978","timeEnd":"0:00:08:121","text":"l'etre supreme"}]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 echo $_POST['sstitres']; //ce qui me donne //[{\"id\":\"0\",\"timeStart\":\"0:00:04:978\",\"timeEnd\":\"0:00:08:121\",\"text\":\"l\'etre supreme\"}]
1 ) Première question : quand est ce que s'effectue l'échappement de toutes mes double quotes ??
Je supprime donc tous les échappements avec
Ensuite je fais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $json = str_replace('\"', '"', $_POST['sstitres']); //ce qui me donne //[:{"id":"0","timeStart":"0:00:04:978","timeEnd":"0:00:08:121","text":"l\'etre supreme"}]
Et là la fonction plante. Alors pour tester, j'ai placer la chaîne de caractère en dure directement dans l'appel de la fonction. Ce qui donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $output = json_decode($json, true); print_r($output);
Et bizarrement cela donne le résultat escompté :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $output = json_decode('[{"id":"0","timeStart":"0:00:04:978","timeEnd":"0:00:08:121","text":"l\'etre supreme"}]', true); print_r($output);
2) Pourquoi cette différence de comportement suivant ces deux cas ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part Array ( [0] => Array ( [id] => 0 [timeStart] => 0:00:04:978 [timeEnd] => 0:00:08:121 [text] => l'etre supreme ) )
Le phénomène arrive uniquement lorsque j'utilise un ' ou un " dans une de mes valeurs de mon objet JSON.
Quelqu'un a une autre méthode, une astuce ?
Merci
Partager