我正在使用以下腳本從我的Facebook頁面中提取最新帖子。將Facebook文章拉入網頁時出現超鏈接問題
它如預期那樣做,但是,如果Facebook文章包含超鏈接,鏈接變成亂碼&不再有效。如果您可以使用我的代碼,請嘗試一下 - 確保安裝了curl。 <a href="/l.php?u=http%3A%2F%2Fwww.empireonline.com%2Fnews%2Fstory.asp%3FNID%3D36903&h=AAQFjtw9e&s=1" target="_blank" rel="nofollow nofollow" onmouseover="LinkshimAsyncLink.swap(this, "http:\/\/www.empireonline.com\/news\/story.asp?NID=36903");" onclick="LinkshimAsyncLink.swap(this, "\/l.php?u=http\u00253A\u00252F\u00252Fwww.empireonline.com\u00252Fnews\u00252Fstory.asp\u00253FNID\u00253D36903&h=AAQFjtw9e&s=1");">http://www.empireonline.com/news/story.asp?NID=36903</a><br/><br/><a href="http://www.facebook.com/photo.php?fbid=597077380322404&set=a.583314588365350.145103.466171083413035&type=1&relevant_count=1" id="" title="" target="" onclick="" style=""></a>
有沒有人遇到過這個問題:如出現
<?php
$url = "http://www.facebook.com/feeds/page.php?id=466171083413035&format=json";
// disguises the curl using fake headers and a fake user agent.
function disguise_curl($url)
{
$curl = curl_init();
// Setup headers - the same headers from Firefox version 2.0.0.6
// below was split up because the line was too long.
$header[0] = "Accept: text/xml,application/xml,application/xhtml+xml,";
$header[0] .= "text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
$header[] = "Cache-Control: max-age=0";
$header[] = "Connection: keep-alive";
$header[] = "Keep-Alive: 300";
$header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
$header[] = "Accept-Language: en-us,en;q=0.5";
$header[] = "Pragma: "; // browsers keep this blank.
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla');
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_REFERER, '');
curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate');
curl_setopt($curl, CURLOPT_AUTOREFERER, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
$html = curl_exec($curl); // execute the curl command
curl_close($curl); // close the connection
return $html; // and finally, return $html
}
// uses the function and displays the text off the website
$text = disguise_curl($url);
$json_feed_object = json_decode($text);
$i = 0;
foreach ($json_feed_object->entries as $entry)
{
echo "<h2>{$entry->title}</h2>";
$published = date("g:i A F j, Y", strtotime($entry->published));
echo "<small>{$published}</small>";
$content = preg_replace("/<img[^>]+\>/i", "", $entry->content);
echo "<p style='word-wrap:break-word;'>{$content}</p>";
echo "<hr />";
$i++;
if ($i == 1) { break;}
}
?>
編輯 我的超級鏈接?有解決方案嗎?
非常感謝任何指針。
這可能是與實體編碼的問題。看看從json解碼後的內容輸出。 – datasage 2013-03-26 19:33:13
我已經使用生成的超鏈接HTML更新了我的OP。 – michaelmcgurk 2013-03-26 19:35:17
我需要做的只是'$ content = str_replace('href =「/ l.php','href =」http://www.facebook.com/l.php',$content);' - phew!無論如何感謝:) – michaelmcgurk 2013-03-26 19:43:03