JavaScript et JSON n'autorisent pas les retours à la ligne contenus dans une chaîne. Vous devez leur échapper.
json_encode()
devrait leur échapper automatiquement pour vous.
Voici le résultat de mon jeu avec votre code JSON fourni sur le shell interactif PHP :
php > $json = '{"content":"aaa
php ' bbb"}';
php > var_dump(json_decode($json, true));
NULL
Comme vous pouvez le voir lorsque j'échappe à votre retour de ligne, cela fonctionne très bien :
php > $json = '{"content":"aaa\n bbb"}';
php > var_dump(json_decode($json, true));
array(1) {
["content"]=>
string(8) "aaa
bbb"
}
Ceci est également abordé plus en détail dans une question précédente relative à un problème similaire :Problème lors de la récupération de texte au format JSON contenant des sauts de ligne avec jQuery