在 this page 上,我有一堆mp3文件显示为精美风格的盒子。
每个方框都有一个Facebook分享按钮。我想将每个框{id (mp3jWrap_0, mp3jWrap_1
等)添加为其 Facebook共享链接的哈希值,以便每次从Facebook访问共享项目时,该URL都包含项目& #39; s hash 。
为此,我编写了代码:
<?php
$actual_link = (isset($_SERVER['HTTPS']) ? "https" : "http") . "://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$actual_link = trim($actual_link, '/');
$actual_link = $actual_link . '#mp3jWrap_' . $id;
echo '<li class="fb_share"><a href="http://www.facebook.com/sharer.php?u="' . $actual_link . '" title="Share on Facebook" target="_blank"><i class="fa fa-facebook"></i></a></li>';
?>
问题:当您单击共享按钮时,哈希(包含哈希)之后的字符串不在URL中。为什么呢?
答案 0 :(得分:0)
您必须 urlencode $ actual_link
答案 1 :(得分:0)
您需要通过$actual_link
PHP函数传递urlencode()
。
所以,你的代码应该是这样的:
echo '<li class="fb_share"><a href="http://www.facebook.com/sharer.php?u="' . urlencode($actual_link) . '" title="Share on Facebook" target="_blank"><i class="fa fa-facebook"></i></a></li>';
这种情况正在发生,因为浏览器会认为散列是针对共享链接上的共享页面(fb上的那个)。
如果没有urlencode,则共享网址为:
http://www.facebook.com/sharer.php?u=http://example.com/path/#mp3jWrap_id
用它编码:
http://www.facebook.com/sharer.php?u=http%3A%2F%2Fexample.com%2Fpath%2F%23mp3jWrap_id
这最终会被解释为一个好的链接。