2013-03-26 5 views
0

J'utilise le script suivant pour extraire le dernier message de ma page Facebook.Problème avec les liens hypertexte lors de l'insertion de messages Facebook dans la page Web

Il le fait comme prévu, cependant, si le message Facebook contient un lien hypertexte, le lien devient brouillé & ne fonctionne plus. Essayez-le si vous pouvez utiliser mon code - en vous assurant que curl est installé.

<?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;} 
} 
?> 

EDIT Mon lien apparaît comme: <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>

Quelqu'un at-il jamais rencontré ce problème avant? Y a-t-il une solution?

Un grand merci pour les pointeurs.

+1

Ceci est probablement un problème avec le codage de l'entité. Jetez un oeil à la sortie du contenu après son décodage de JSON. – datasage

+0

J'ai mis à jour mon OP avec l'hyperlien HTML généré. – michaelmcgurk

+0

Tout ce que je devais faire était '$ content = str_replace ('href ="/l.php', 'href = "http://www.facebook.com/l.php',$content);' - ouf! Merci quand même :) – michaelmcgurk

Répondre

0

Mon mauvais.

Tout ce que j'avais besoin était de faire une chaîne de remplacement sur toutes les URL et ajouter facebook.com.

Voici mon code au cas où il aide les autres:

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

Questions connexes