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 : 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"}]
Voici ce que reçoit mon script lorsque je fais un
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
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"}]
Ensuite je fais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : 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);
Et bizarrement cela donne le résultat escompté :
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 ) )
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