2010-01-17 7 views
3

Est-ce que quelqu'un sait pourquoi cela se produit?Impossible de décoder JSON stripslashed String?

var_dump(json_decode(stripslashes(json_encode(array("O'Reiley"))))); // array(1) { [0]=> string(8) "O'Reiley" } 
var_dump(json_decode(stripslashes(json_encode(array("O\'Reiley"))))); // NULL 

sont-' utilisés à toutes les fonctions de JSON?

Répondre

5

Je ne sais pas pour sûr, mais json_last_error() dois :)

Je pense, cependant, est que json_encode() fait quelque chose au \' que le stripslashes() puis brise - par exemple ajoutez un autre "\" pour échapper à la barre oblique inverse.

Vous ne tripotez pas avec une chaîne codée json en utilisant striplslashes() avant même que le code ne soit décodé?

+0

Première fois que je vais utiliser cette fonction! Yey! –

+0

Retourne JSON_ERROR_SYNTAX, encore je ne comprends pas pourquoi ... –

+0

Pouvez-vous vider la chaîne json_encoded de la deuxième ligne (sans stripslashes)? –

2

Je ne regardais pas trop profondément, mais il semble que votre code est

  1. Prendre un tableau PHP et de le transformer en une chaîne JSON

  2. Mucking avec cette chaîne

  3. Essayer de décoder la chaîne mucked JSON

Pensez comme ça

$json_string = json_encode(array("O\'Reiley"); 
$json_string = stripslashes($json_string);  

//it's no longer json, its just some random non-conforming string 
var_dump(json_decode($json_string)) 
+0

Oui, mais j'ai cru que JSON n'utilisait pas '' 'et n'avait donc aucune raison d'y échapper. –

0

Vous devriez essayer sans stripslashes()

$result = json_encode(striptslashes(array("O\'Reiley"))); 
if(json_last_error() > 0){ 
    $result = json_encode(array("O\'Reiley")); 
} 
Questions connexes