2012-05-21 8 views
1

Можно создать дубликат:
How to decode a JSON string in PHP?Извлечение/декодирования с переменной из строки JSON

Я хотел бы извлечь переменную 'name' из строки JSON $jsonstring;

<?php 

$facebookid = $_GET['fbid']; 
$facebooklink = 'http://graph.facebook.com/'.$facebookid.'?fields=name'; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $facebooklink); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
$jsonstring = curl_exec($ch); 
curl_close($ch); 

?> 

$jsonstring бы вывести что-то вроде следующего:

{ 
    "name": "THIS PART IS WHAT I WANT", 
    "id": "4" 
} 

Я хотел бы извлечь «эта часть является то, что я хочу» из приведенного выше примера.

Я попытался использовать json_decode, но не смог заставить его работать, с тех пор я удалил этот код и поэтому не могу его здесь записать. Спасибо за любую помощь.

+0

'$ jsonstring = curl_exec ($ ч);' не даст вам назначить в формате JSON. Он просто дает вам статус 'curl_exec' –

ответ

3

попробовать

ob_start(); 
$facebookid = $_GET['fbid']; 
$facebooklink = 'http://graph.facebook.com/'.$facebookid.'?fields=name'; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $facebooklink); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
$jsonstring = curl_exec($ch); 
curl_close($ch); 
$bufferstr = ob_get_contents(); 
ob_end_clean(); 
$json = json_decode($bufferstr); 
echo $json->name; 
+0

@Andreas & OP - Спасибо за ответы. Однако каждый ответ возвращает то же самое: {" name ":" ЭТО ЧАСТЬ - ЧТО Я ХОЧУ "," id ":" 4 " } без «имени», я не знаю, что я делаю неправильно? : s Спасибо. – Harry

+0

@Harry любая ошибка? любой выход эха или выполнение 'var_dump'? –

+0

Я знаю его много, чтобы спросить, но вы бы сделали мне массивную, огромную услугу, если бы вы могли быстро просмотреть мой код? Я был бы очень благодарен, Я загрузил файл .php здесь: http://dl.dropbox.com/u/2578642/facebookconf.php Спасибо – Harry

0
<?php 
    $json = '{"foo-bar": 12345}'; 

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

В том случае, если у вас нет «json_decode» в вашей версии PHP вы должны использовать регулярное выражение.

<?php 

$name = json_decode($jsonstring)->name; 

?> 
1

Try:

<?php 
    $foo = json_decode($jsonstring); 
    $name = $foo->name; 
    //echo $name; 
?> 
1

попробовать этот

$json_obj = json_decode($jsonstring); 
echo $json_obj->name; 
Смежные вопросы