2013-03-26 99 views
0

我正在使用以下脚本从我的Facebook页面中提取最新帖子。将Facebook文章拉入网页时出现超链接问题

它如预期那样做,但是,如果Facebook文章包含超链接,链接变成乱码&不再有效。如果您可以使用我的代码,请尝试一下 - 确保安装了curl。 <a href="/l.php?u=http%3A%2F%2Fwww.empireonline.com%2Fnews%2Fstory.asp%3FNID%3D36903&amp;h=AAQFjtw9e&amp;s=1" target="_blank" rel="nofollow nofollow" onmouseover="LinkshimAsyncLink.swap(this, &quot;http:\/\/www.empireonline.com\/news\/story.asp?NID=36903&quot;);" onclick="LinkshimAsyncLink.swap(this, &quot;\/l.php?u=http\u00253A\u00252F\u00252Fwww.empireonline.com\u00252Fnews\u00252Fstory.asp\u00253FNID\u00253D36903&amp;h=AAQFjtw9e&amp;s=1&quot;);">http://www.empireonline.com/news/story.asp?NID=36903</a><br/><br/><a href="http://www.facebook.com/photo.php?fbid=597077380322404&amp;set=a.583314588365350.145103.466171083413035&amp;type=1&amp;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;} 
} 
?> 

编辑 我的超级链接?有解决方案吗?

非常感谢任何指针。

+1

这可能是与实体编码的问题。看看从json解码后的内容输出。 – datasage 2013-03-26 19:33:13

+0

我已经使用生成的超链接HTML更新了我的OP。 – michaelmcgurk 2013-03-26 19:35:17

+0

我需要做的只是'$ content = str_replace('href =“/ l.php','href =”http://www.facebook.com/l.php',$content);' - phew!无论如何感谢:) – michaelmcgurk 2013-03-26 19:43:03

回答

0

我的不好。

我只需要做一个字符串替换任何网址并追加facebook.com。

这里是我的情况下,代码它有助于其他任何:

$content = str_replace(' href="/l.php', ' href="http://www.facebook.com/l.php',$content);