1

wordpress 用の facebook フィード プラグインを作成していますが、ローカル ファイルを使用しているときに動作するようにしていますが、$fb = new SimpleXMLElement($xmlstr);.

$xmlstrは XML を含む変数で、そのファイル内のコンテンツはhttps://www.facebook.com/feeds/page.php?format=rss20&id=133869316660964からのものです。

SimpleXMLElement を使用して Web ページからデータを保存することは可能ですか?

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 に答える