Не удается декодировать строку JSON с полосами? - PullRequest
3 голосов
/ 17 января 2010

Кто-нибудь знает, почему это происходит?

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

' используется ли вообще функциями JSON?

Ответы [ 3 ]

5 голосов
/ 17 января 2010

Не знаю точно, но json_last_error () должен:)

Однако я предполагаю, что json_encode() что-то делает с \', что stripslashes() затем ломается - например, добавьте еще один "\", чтобы избежать обратной косой черты.

Не работает ли с строкой в ​​кодировке json, используя striplslashes(), прежде чем она все равно будет неправильно декодирована?

2 голосов
/ 17 января 2010

Я не смотрел на это слишком глубоко, но похоже, что ваш код

  1. Взяв массив PHP и превратив его в строку json

  2. Гадость с этой струной

  3. Попытка декодировать измененную строку как json

Думайте об этом так

$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 голосов
/ 27 октября 2014

Вы должны попробовать без полосок ()

$result = json_encode(striptslashes(array("O\'Reiley")));
if(json_last_error() > 0){
   $result = json_encode(array("O\'Reiley"));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...