2016-03-12 4 views
0

это ответ от YouTube API (https://www.youtube.com/oembed?format=json&url=https://www.youtube.com/watch?v=EeVIPLzui7M)json_decode не расшифровать строку

, когда я пытаюсь его расшифровать как тот

<?php 

echo json_decode('{"provider_name": "YouTube", "version": "1.0", "html": "\u003ciframe width=\"480\" height=\"270\" src=\"https:\/\/www.youtube.com\/embed\/EeVIPLzui7M?feature=oembed\" frameborder=\"0\" allowfullscreen\u003e\u003c\/iframe\u003e", "provider_url": "https:\/\/www.youtube.com\/", "thumbnail_url": "https:\/\/i.ytimg.com\/vi\/EeVIPLzui7M\/hqdefault.jpg", "type": "video", "thumbnail_height": 360, "author_url": "https:\/\/www.youtube.com\/channel\/UCCfkNoFDIRnITBg9J4hSdZw", "thumbnail_width": 480, "height": 270, "width": 480, "author_name": "\u0627\u0644\u063a\u0632\u0627\u0629 \u0104\u0141J\u00d8\u0151\u00d8\u0136\u0158", "title": "\u0627\u0644\u0628\u0637\u0648\u0644\u0629 \u0627\u0644\u0643\u0628\u0631\u0649 * \u062a\u062d\u0627\u0644\u0641 \u062f\u0642 \u062e\u0634\u0648\u0645 \u00d7 \u0643\u062a\u064a\u0628\u0629 \u0627\u0639\u062f\u0627\u0627\u0645 \U0001f60e \u062f\u0639\u0633 \U0001f451\u274c"}',true); 

она не дает мне ничего

любой знает, почему?

+0

Проверить эту ссылку: http://stackoverflow.com/questions/7124118/embed-youtube-videos-using-oembed –

ответ

1

Простое открытие https://www.youtube.com/oembed?format=json&url=https://www.youtube.com/watch?v=EeVIPLzui7M# в моем браузере отображается ошибка синтаксиса JSON (так как у меня есть расширение браузера для рендеринга JSON).

json_decode возвращает NULL, потому что то, что вы передаете в него, не является JSON. Предположительно, это связано с ошибкой со стороны YouTube.

+0

любые подходы к его решению? –

+0

Сообщить об ошибке на YouTube? – Quentin

1

Вы можете использовать формат XML вместо JSON (и, если вам нужен формат JSON для какой-либо причине, повторно преобразовать его): выход

$url = 'https://www.youtube.com/oembed?format=xml&url=https://www.youtube.com/watch?v=EeVIPLzui7M'; 
$xml = simplexml_load_file($url); 

echo $xml->author_name . PHP_EOL; 
echo $xml->width . PHP_EOL; 
echo $xml->thumbnail_url . PHP_EOL; 
echo $xml->thumbnail_width . PHP_EOL; 
echo $xml->provider_url . PHP_EOL; 
echo $xml->type . PHP_EOL; 
echo $xml->height . PHP_EOL; 
echo $xml->author_url . PHP_EOL; 
echo $xml->version . PHP_EOL; 
echo $xml->provider_name . PHP_EOL; 
echo $xml->thumbnail_height . PHP_EOL; 
echo $xml->title . PHP_EOL; 
echo htmlentities($xml->html) . PHP_EOL; 

будет:

الغزاة ĄŁJØőØĶŘ 
480 
https://i.ytimg.com/vi/EeVIPLzui7M/hqdefault.jpg 
480 
https://www.youtube.com/ 
video 
270 
https://www.youtube.com/channel/UCCfkNoFDIRnITBg9J4hSdZw 
1.0 
YouTube 
360 
البطولة الكبرى * تحالف دق خشوم × كتيبة اعداام دعس ❌ 
<iframe width="480" height="270" src="https://www.youtube.com/embed/EeVIPLzui7M?feature=oembed" frameborder="0" allowfullscreen></iframe> 

Если вам нужны данные в формате JSON, используйте это:

$xml = simplexml_load_file($url); 
$json = json_encode($xml); 

выход (prettified):

{ 
    "html": "<iframe width=\"480\" height=\"270\" src=\"https:\/\/www.youtube.com\/embed\/EeVIPLzui7M?feature=oembed\" frameborder=\"0\" allowfullscreen><\/iframe>", 
    "thumbnail_width": "480", 
    "provider_name": "YouTube", 
    "height": "270", 
    "title": "\u0627\u0644\u0628\u0637\u0648\u0644\u0629 \u0627\u0644\u0643\u0628\u0631\u0649 * \u062a\u062d\u0627\u0644\u0641 \u062f\u0642 \u062e\u0634\u0648\u0645 \u00d7 \u0643\u062a\u064a\u0628\u0629 \u0627\u0639\u062f\u0627\u0627\u0645 \ud83d\ude0e \u062f\u0639\u0633 \ud83d\udc51\u274c", 
    "author_name": "\u0627\u0644\u063a\u0632\u0627\u0629 \u0104\u0141J\u00d8\u0151\u00d8\u0136\u0158", 
    "width": "480", 
    "author_url": "https:\/\/www.youtube.com\/channel\/UCCfkNoFDIRnITBg9J4hSdZw", 
    "version": "1.0", 
    "type": "video", 
    "thumbnail_height": "360", 
    "provider_url": "https:\/\/www.youtube.com\/", 
    "thumbnail_url": "https:\/\/i.ytimg.com\/vi\/EeVIPLzui7M\/hqdefault.jpg" 
} 
1

Всегда использовать функции для отладки

json_last_error(); 
json_last_error_msg(); 

В вашем случае выход есть:

int(4) 
string(12) "Syntax error" 

Именно поэтому печать ' null "ничего не дает.

Для получения более подробной информации вы можете использовать онлайн валидаторы как http://jsonlint.com

В FIX:

Изменение каждый юникода обугленного из ответа с прописными буквами «U» в нижнем регистре «и»

Например: '\ u0001f60e' => '\ u0001f60e'

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