繁体   English   中英

将PERMALINK存储在PHP变量中

[英]store the PERMALINK in a PHP variable

我有这个代码来计算我帖子中所有社交网站的份额。 代码的问题是永久链接是静态的。

如果您注意到,我使用get_permalink();将永久链接存储在$myurl变量中get_permalink(); ,代码的问题是,一旦我改变链接“ 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编码一个不存在的变量。 目前你有

$myurl = get_permalink();
$url = urlencode($url);

......应该是什么时候

$myurl = get_permalink();
$url = urlencode($myurl);

第二个是没有定义名为twitter_tweet_countfacebook_like_share_countpinterest_pins函数。 相反,您已使用匿名函数将它们分配给变量以确定其值。

基本上你应该能够改变这一点

echo twitter_tweet_count( 'http://www.bendaggers.com/how-to-write-a-killer-resume-that-lands-an-interview/' );

......对此

echo $twitter_tweet_count( 'http://www.bendaggers.com/how-to-write-a-killer-resume-that-lands-an-interview/' );

...唯一的区别是twitter_tweet_count文本之前的$

一旦修复了,你应该进一步能够结合两个修复,最终产品看起来像这样(使用$url的动态值):

<?php

$myurl = get_permalink();
$url = urlencode($myurl);

$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( $url );

echo "<br>";

echo $facebook_like_share_count( $url );

echo "<br>";

echo $pinterest_pins( $url );

echo "<br>";

?>

阅读您在评论中给出的最后一个错误代码:403(禁止访问)

所以我继续使用facebook API文档并发现: 链接到docs

可能您请求的某个操作可能会抛出错误。 这可能是因为,例如,您没有权限执行请求的操作。

在此引用后面的示例中,我们可以看到请求的403响应代码。

好吧,我可以从导航器和PHP file_get_contents函数访问此页面。 所以也许你被列入黑名单,或者有一些配额......如果问题仍然存在,你应该联系Facebook,了解为什么你的服务器无法访问这些信息。

{
   "id": "http://alphaomega.bendaggers.com/2014/10/25/legendary-moments-of-barney-stinson/",
   "shares": 4
}

希望它的帮助:)

有两种方法可以避免此错误。

第一种方法

如果要打开包含特殊字符(如空格)的URI,则需要使用urlencode()对URI进行编码。

urlencode - This function is convenient when encoding a string to be used in a query part of a URL, as a convenient way to pass variables to the next page.

看看下面的代码

$myurl = get_permalink();
$url = urlencode($url);

第二种方法

file_get_contents()使用fopen()包装器,因此限制它通过php.iniallow_url_fopen选项访问URL。

我应该在PHP中允许'allow_url_fopen'吗?

第三种方法

你可以尝试卷曲。 试试这个链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM