Конвертировать HTML в JSON в PHP Laravel - PullRequest
0 голосов
/ 05 июля 2018

Я нажимаю этот URL

https://graph.facebook.com/1843624489016097?fields=link&access_token=EAAD3ZBKkIhYMBAL3KRi9eZBXlYJADZARRFMSe0Nc35WTP92X2etkccVqnjNcjJgKbd8ABtX5pyDPN0nAA7jORyjpOGexZCYp1Sf2iw0DJjCf8UkPiLwhuApSGDGZBvy5w7vk3U0Ba97FZA2DO7J4m4UjvbIolDaRP9TRpemEmLyQZDZD

с кодом ниже в php,

$url ='https://graph.facebook.com/' . $connection->provider_id . '?fields=link&access_token=' . $connection->token;
$ch = curl_init($url);
$json= curl_exec ($ch);

У меня есть этот html от Facebook, я хочу использовать только "Ссылку" в этом,

{"link":"https:\/\/www.facebook.com\/app_scoped_user_id\/YXNpZADpBWEdrUlJiUzc0SWFWZATI4SEVJUmJHTTJQVHU2M3owcTJLOHh5MnJYOTI0LWdMT3VFUC1veXNWdXBhM3o3RzdkQmV4cjNfTC1nSkdheGFhV19pWWU5T1ZAWSzlkN0NBTUl4NVZAKTE9oRjlFbjdObU5i\/","id":"1686741234967769"}1

Я пытался преобразовать это в JSON, но он не работает, он идет в том же формате, так как я делаю это в API, я проверяю это под Почтальоном, я сделал это ..

$request = json_encode($json, JSON_HEX_QUOT | JSON_HEX_TAG);

Формат не конвертируется в json, я делаю в PHP Laravel.

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

В конце вывода есть 1, возможно, вы повторяете что-то дополнительное, чего не должны делать.

Я подозреваю, вы ожидаете, что curl вернет фактический результат, но вы не используете соответствующий флаг. Я подозреваю, что причина в том, что вы присваиваете результат возврата $json, но без флага CURLOPT_RETURNTRANSFER вернет true, а не любое значение json.

Вот что вы можете попробовать:

$url ='https://graph.facebook.com/' . $connection->provider_id . '?fields=link&access_token=' . $connection->token;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER);
$json= curl_exec ($ch);

$jsonArray = json_decode($json, true);
$link = $jsonArray["link"];

Больше информации о флагах скручивания в руководстве

0 голосов
/ 05 июля 2018

Вы должны использовать json_decode вместо json_encode . Поэтому вы должны попробовать как:

$request = json_decode($json, true);

$link = $request["link"];

Также используйте curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);, чтобы сохранить ответ в переменной сразу после curl_init.

...