json_decode() et guillemets
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 :
Code:
sstitres = [{"id":"0","timeStart":"0:00:04:978","timeEnd":"0:00:08:121","text":"l'etre supreme"}]
Voici ce que reçoit mon script lorsque je fais un
Code:
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
Code:
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"}] |
Ensuite je fais :
Code:
1 2
| $output = json_decode($json, true);
print_r($output); |
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:
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); |
Et bizarrement cela donne le résultat escompté :
Code:
Array ( [0] => Array ( [id] => 0 [timeStart] => 0:00:04:978 [timeEnd] => 0:00:08:121 [text] => l'etre supreme ) )
2) Pourquoi cette différence de comportement suivant ces deux cas ?
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