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&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>
Quelqu'un at-il jamais rencontré ce problème avant? Y a-t-il une solution?
Un grand merci pour les pointeurs.
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
J'ai mis à jour mon OP avec l'hyperlien HTML généré. – michaelmcgurk
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