2012-07-31 2 views
9
$a = '[{"function":"error_handler","class":"LP","type":"::","args":[256,"Call to undefined method LP_pdo::get_rorzxx() on D:\\MARK\\htdocs\\lessphptest\\application\\controllers\\users.php (23)","D:\\MARK\\htdocs\\lessphp\\LP.php",210,{"e":{"type":1,"message":"Call to undefined method LP_pdo::get_rorzxx()","file":"D:\\MARK\\htdocs\\lessphptest\\application\\controllers\\users.php","line":23}}]},{"file":"D:\\MARK\\htdocs\\lessphp\\LP.php","line":210,"function":"trigger_error","args":["Call to undefined method LP_pdo::get_rorzxx() on D:\\MARK\\htdocs\\lessphptest\\application\\controllers\\users.php (23)",256]},{"function":"shutdown","class":"LP","type":"::","args":[]}]'; 
$a = json_decode($a); 
print_r($a); 

echo json_last_error(); 

print_r() возвращает пустое.json_decode() возвращает пустое, но оно действительно json

json_last_error() возвращает 4, который является JSON_ERROR_SYNTAX

Но, когда я запускаю строку JSON в http://jsonlint.com/ он возвращает Valid JSON

Любые идеи, почему?

+1

попробовать: $ б = array(); $ b = json_decode ($ a, true); это должно преобразовать json в ассоциативный массив, но сначала вы должны объявить $ b = array(); – Onheiron

ответ

12

Вам нужно бежать ваш \ один раз для PHP и еще раз для JSON

D:\\\\....

+0

Конечно, вы имеете в виду escape your \, а не/ –

+0

, который работает, но есть ли функция, которая это делает? Я просто нахожу/заменяю в «Блокноте» :-) – IMB

+4

@IMB PHP имеет отличные возможности для поиска и замены тоже! '$ str = str_replace ('\', '\\', $ str);' ;-) – Kaii

0

Попытка установить кодировку UTF-8 ... сделал работу для меня

Смежные вопросы