0

このページhttps://developers.facebook.com/blog/feedを自分のサイトにロードしようとして いますが、うまくいきません。私はこのコードを使用しています

<?php
$xml = simplexml_load_file('https://developers.facebook.com/blog/feed/');
   print_r($xml);

?>

しかし、私はこのような多くのエラー行を取得します

警告: simplexml_load_file() [function.simplexml-load-file]: https://developers.facebook.com/blog/feed/:10 : パーサー エラー: xmlParseEntityRef: 2 行目の /fb_feed/fb_feed.php に名前がありません

私を助けてくれたすべての人に感謝します

4

3 に答える 3

2

これはXMLフィード自体の問題だと思います。

この記事を参照してください

file_get_contentsを使用して文字列をロードし、アンペランドでstr_replaceを実行して

&amp;

だからあなたを残します

$xml = simplexml_load_string(str_replace('&','&amp;',file_get_contents('https://developers.facebook.com/blog/feed/')));

編集:

コメントで見たように、これは以前に取り組まれており、str_replaceを元の状態から

$xml = simplexml_load_string(str_replace(array("&amp;", "&"), array("&", "&amp;"),file_get_contents('https://developers.facebook.com/blog/feed/')));

これにより、すでに正しくエンコードされているアンパサンドの変換が回避されます。

編集2:

Facebookは、file_get_contentsからのリクエストをブラウザの選択ページにリダイレクトします。したがって、通常のブラウザを使用していると思わせるように「だまして」ください。

$url='https://developers.facebook.com/blog/feed/';
$crl = curl_init();
$timeout = 5;
curl_setopt ($crl, CURLOPT_URL,$url);
curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($crl,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
$ret = curl_exec($crl);
curl_close($crl);
$xml = simplexml_load_string(str_replace(array("&amp;", "&"),array("&", "&amp;"),$ret));     
var_dump($xml);

ほとんどの場合、最初の答えは機能するはずですが、編集2は、Facebook Devブログ、またはuser-agentヘッダーに基づいてリダイレクトするその他のブログ用です。

于 2012-09-06T10:13:08.377 に答える
0

このページが示すように、URLをエンコードする必要がある場合があります

simplexml_load_file(rawurlencode('https://developers.facebook.com/blog/feed/'))

それが機能しない場合は、ファイルをロードしてfile_get_contents、戻り値をxmlパーサーに渡すことができます。

simplexml_load_string( file_get_contents('https://developers.facebook.com/blog/feed/') );
于 2012-09-06T10:08:21.970 に答える
0
<?php
$url = "https://developers.facebook.com/blog/feed/";
$xml = str_replace('&','&amp;', file_get_contents($url));
$xml = simplexml_load_string($xml);
print_r($xml);
?>
于 2012-09-06T10:09:35.473 に答える