【发布时间】:2015-04-17 13:05:19
【问题描述】:
我有这个代码来计算我帖子中所有社交网站的分享。代码的问题是永久链接是静态的。
如果您注意到,我使用get_permalink(); 将永久链接存储在$myurl 变量中,代码的问题是一旦我更改链接“http://www.bendaggers.com/how-to-write-a-killer-resume-that-lands-an-interview/”,它会给我带来大量错误,例如:
file_get_contents(http://graph.facebook.com/?id=$myurl): 失败 打开流:HTTP 请求失败!
这是我的代码:
$myurl = get_permalink();
$url = urlencode($url);
$facebook_like_share_count = function ( $url ) {
$api = file_get_contents( 'http://graph.facebook.com/?id=' . $url );
$count = json_decode( $api );
return $count->shares;
};
$twitter_tweet_count = function ( $url ) {
$api = file_get_contents( 'https://cdn.api.twitter.com/1/urls/count.json?url=' . $url );
$count = json_decode( $api );
return $count->count;
};
$pinterest_pins = function ( $url ) {
$api = file_get_contents( 'http://api.pinterest.com/v1/urls/count.json?callback%20&url=' . $url );
$body = preg_replace( '/^receiveCount\((.*)\)$/', '\\1', $api );
$count = json_decode( $body );
return $count->count;
};
echo twitter_tweet_count( 'http://www.bendaggers.com/how-to-write-a-killer-resume-that-lands-an-interview/' );
echo "<br>";
echo facebook_like_share_count( 'http://www.bendaggers.com/how-to-write-a-killer-resume-that-lands-an-interview/' );
echo "<br>";
echo pinterest_pins( 'http://www.bendaggers.com/how-to-write-a-killer-resume-that-lands-an-interview/' );
echo "<br>";
?>
要添加,get_permalink 函数返回活动页面的当前 URL。我这样做是为了将它集成到我的 wordpress 网站并显示确切的共享数量(facebook、twitter、linkedin 和 pinterest)。上面的代码不返回当前页面的 URL。它是静态的。
【问题讨论】:
-
查看这些,看来您需要在输入
$url上调用urlencode()。所以$url = urlencode($url);——因为它在发送到file_get_contents()的API 调用中用作查询字符串参数。不过,这可能不是唯一导致问题的原因。 -
关于样式的注释 - 您在此处的内容适用于大多数 PHP 版本,但似乎受到 JavaScript 函数定义样式的严重影响。这对于 PHP 来说是非常陌生的。函数定义会更传统如
function pinterest_pins($url) {...},然后在不使用$的情况下调用pinterest_pins('http://...');,而不是将函数分配给变量并通过变量函数调用。 -
这段代码的奇怪之处,如果我使用了 echo twitter_tweet_count("google.com");,echo facebook_like_share_count("google.com);,它工作得很好。如果我会显示错误将静态链接更改为 $myurl