我有以下PHP函数,它获取当前URL:
function getCurrentUrl() {
$isHTTPS = ( isset($_SERVER["HTTPS"] ) && $_SERVER["HTTPS"] == "on" );
$port = ( isset($_SERVER["SERVER_PORT"] ) && (( !$isHTTPS && $_SERVER["SERVER_PORT"] != "80" ) || ( $isHTTPS && $_SERVER["SERVER_PORT"] != "443" )));
$port = ($port) ? ':'.$_SERVER["SERVER_PORT"] : '';
$url = ( $isHTTPS ? 'https://' : 'http://').$_SERVER["SERVER_NAME"].$port.$_SERVER["REQUEST_URI"];
return $url;
}
接下来我有以下代码:
<ul>
<li id="face"><a href="https://www.facebook.com/sharer.php?u=<?php echo getCurrentUrl(); ?>&t=<?php echo $title; ?>" class="popup" title="Facebook">Share</a></li>
<li id="tweet"><a href="http://twitter.com/home?status=<?php echo getCurrentUrl(); ?>" class="popup" title="Tweeter">Tweet</a></li>
</ul>
如果我使用<?php echo getCurrentUrl(); ?>
回显网址,则会返回正确的结果:http://mydomain.com/index.php?menu=13&page=7
但是当我尝试将当前网址分享到Facebook或Twitter时,page
会被切断,因此共享网址似乎总是http://mydomain.com/index.php?menu=13
我该如何处理这个问题?
答案 0 :(得分:0)
您是否尝试过urlencode您的网址?
function getCurrentUrl()
{
$isHTTPS = ( isset($_SERVER["HTTPS"] ) && $_SERVER["HTTPS"] == "on" );
$port = ( isset($_SERVER["SERVER_PORT"] ) && (( !$isHTTPS && $_SERVER["SERVER_PORT"] != "80" ) || ( $isHTTPS && $_SERVER["SERVER_PORT"] != "443" )));
$port = ($port) ? ':'.$_SERVER["SERVER_PORT"] : '';
$url = ( $isHTTPS ? 'https://' : 'http://').$_SERVER["SERVER_NAME"].$port.$_SERVER["REQUEST_URI"];
return urlencode($url);
}
答案 1 :(得分:0)
我认为问题在于,在Facebook分享按钮中,您在网址后面有“&amp; t =”,这可能会导致网址错误并被切断,因为&amp; page =会让人感到困惑。所以我说你试着这样做:
<ul>
<li id="face"><a href="https://www.facebook.com/sharer.php?t=<?php echo $title; ?>&u=<?php echo getCurrentUrl(); ?>" class="popup" title="Facebook">Share</a></li>
<li id="tweet"><a href="http://twitter.com/home?status=<?php echo getCurrentUrl(); ?>" class="popup" title="Tweeter">Tweet</a></li>
</ul>
我不确定推特应该有用。