2016-07-31 89 views
-2

我想知道如何获得YouTube视频ID,我的API打印出来的内容。我想获取页面内容,而不是源代码。如果有人想看看它的样子,这里是API网址:http://fnapi.cpt-design.tk/api.php从URL获取页面内容

我有这个迄今为止

<?php $id = NULL; 
     $channel_id = 'UCd_09Tp1Bk05gDqc1RWyhuw'; 
     $xml = simplexml_load_file(sprintf('youtube.com/feeds/videos.xml?channel_id=%s';, $channel_id)); 
     if (!empty($xml->entry[0]->children('yt', true)->videoId[0])){ 
     $id = $xml->entry[0]->children('yt', true)->videoId[0]; 
     } 
     echo $id; 
?> 
+2

欢迎堆栈溢出!我们需要更多的细节(以及更深入的解释,以及目前的代码)。 –

+0

@DavidGomes http://pastebin.com/iHvx3vJR 这是我唯一的代码。我想用JQuery打印出这个ID。 –

回答

0

如果该页面位于您可以通过smarx使用回答同一个域。

如果您想从其他域获取页面内容。您应该使用PHP =>卷曲

How to get page content using cURL?

或者,如果这是你的域名,你可以发送

<?php header("Access-Control-Allow-Origin: *"); ?> 

根据您的回复。

+0

我想用JQuery获取页面内容:/不是cURL。我无法使用它,因为我正在创建浏览器扩展。 –

+0

如果我明白,您想获取youtube.com网页内容,那么您无法使用javascript获取网页内容。 XSS保护。跨站点内容无法通过JavaScript读取。没有主要的浏览器会允许你。或者,如果你想从这个api获得youtube video id,并且你的域名,你应该发送allow-cross-origin标题和你的回复 – ArtemSky

+0

是啊!这就是我想要的!我想访问我自己的页面并获取它的内容。只有YouTube视频ID。你知道如何发送这个头文件并获得这个ID吗? –

0

从同一域中的页面,这应该工作:

$.get('http://fnapi.cpt-design.tk/api.php').done(function (id) { 
    console.log(id); 
}); 

从另一个域名,你首先必须修改通过将报头Access-Control-Allow-Origin: *支持CORS的API。

在PHP中,这意味着把这个线在你的代码的顶部:

header("Access-Control-Allow-Origin: *"); 
+0

它位于不同的域中,因为我正在创建浏览器扩展。 –

+0

那么,API不支持CORS,所以它不能从另一个域的JavaScript中调用。也就是说,我认为浏览器扩展通常可以产生跨源请求......你在为什么浏览器写扩展名?这是你注入到在后台运行的页面或代码中的JavaScript吗?你可能想分享你的实际代码。 – smarx

+0

我正在为Opera创建扩展。 这里是我的实际代码:http://pastebin.com/T7KSGqRb 而且 - 是的,该代码在后台运行。 –