1

我正在为 wordpress 创建一个 facebook 提要插件,并在它使用本地文件时让它工作,但是我需要加载到$fb = new SimpleXMLElement($xmlstr);.

$xmlstr是一个带有 XML 的变量,该文件中的内容来自这里https://www.facebook.com/feeds/page.php?format=rss20&id=133869316660964

SimpleXMLElement 是否可以存储来自网页的数据?

我尝试使用 file_get_contents 但它没有用。当我使用该功能时,facebook 给出了这个错误:http: //imgur.com/3qOxl使用此代码时:echo "contents: " . file_get_contents('https://www.facebook.com/feeds/page.php?format=rss20&id=133869316660964');

4

2 回答 2

1

我使用 PHP 的 cURL 库解决了这个问题。

   // Init a cURL resource
   $ch = curl_init("https://www.facebook.com/feeds/page.php?format=rss20&id=133869316660964");
   curl_setopt( $ch, CURLOPT_POST, false );
   curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
   // Make facebook think it is being accessed by a browser to avoid 
   //compatability issues
   curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; 
   Windows NT 5.0; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7");
   curl_setopt( $ch, CURLOPT_HEADER, false );
   curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
   $data = curl_exec( $ch );

从那里我将简单的 xml 设置为 $data。

$fb = new SimpleXMLElement($data);

希望这对未来的人们有所帮助!

重要的是:

curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; 
       Windows NT 5.0; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7");

因为否则 facebook 会认为您使用的是过时的浏览器。

于 2012-12-20T10:52:39.067 回答
0

file_get_contents 将与呈现的数据一起返回给您,例如,当我们使用它时,这将返回与您在 Web 浏览器选项中file_get_contents('google.com/index.html')获得的相同的 HTML 内容。View Source

于 2012-12-20T09:24:13.047 回答