2017-01-20 9 views
0

С помощью этого кода:json_decode не работает со строкой

$url = 'https://www.xxxxxxx.com/api/v1/phone/?apikey=xxxxxxxxxx&id='.$id; 

$cURL = curl_init(); 

curl_setopt($cURL, CURLOPT_URL, $url); 
curl_setopt($cURL, CURLOPT_HTTPGET, true); 

curl_setopt($cURL, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json', 
    'Accept: application/json' 
)); 
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true); 
$result = curl_exec($cURL); 

curl_close($cURL); 

    echo $result;  
    var_dump ($result); 
    var_dump(json_decode($result, true)); 

Я понимаю, что:

{ "телефон": "0 811 228 338"}

строка (32) "{" телефон ":" X XXX XXX XXX "}"

NULL

Я не понимаю, почему json_decode здесь не работает?

Спасибо за помощь мне

ответ

1

Решение было то, что реакция в UTF-8, но не UTF-8 (SANS BOM). Это означает, что в начале строки есть невидимый каратектор (U + FEFF).

Решение: $result = substr($result, 3);

Спасибо за вашу помощь

1

с небольшим количеством информации я получил я полагаю, что ее проблема JSON верстку.

<?php 

    $json = '{"foo-bar": 12345}'; 

    $obj = json_decode($json); 
    print $obj->{'foo-bar'}; // 12345 

?> 

в JSon кавычки не являются действительными http://php.net/manual/en/function.json-decode.php

попробовать его в какой-то валидатор как это один http://jsonlint.com/

+0

выглядит как его первоначальный вход был строка 'строка (32) "{" телефон ":" X XXX XXX XXX "}"', который не является JSON – GantTheWanderer

+0

Спасибо за ответ. Но на самом деле, результат $ {«phone»: «X XXX XXX XXX»} –

+0

Этот NULL у вас есть. Он не должен быть там или должен быть ключ, значение которого NULL –