PHP:将元素id作为哈希添加到Facebook共享链接

PHP:将元素id作为哈希添加到Facebook共享链接,php,jquery,facebook,facebook-graph-api,hash,Php,Jquery,Facebook,Facebook Graph Api,Hash,在上,我有一堆mp3文件显示为样式精美的方框 每个框都有一个Facebook共享按钮。我想将每个框id(mp3jWrap\u 0、mp3jWrap\u 1等)作为散列添加到其Facebook共享链接,以便每次从Facebook访问共享项目时,URL都包含该项目的散列 为此,我编写了以下代码: <?php $actual_link = (isset($_SERVER['HTTPS']) ? "https" : "http") . "://" . $_SERVER['HTTP_HOST']

上,我有一堆mp3文件显示为样式精美的方框

每个框都有一个Facebook共享按钮。我想将每个框id
(mp3jWrap\u 0、mp3jWrap\u 1
等)作为散列添加到其Facebook共享链接,以便每次从Facebook访问共享项目时,URL都包含该项目的散列

为此,我编写了以下代码:

<?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中。为什么?

您必须urlencode$actual\u link

您需要通过
urlencode()
PHP函数传递
$actual\u link
。 因此,您的代码应该如下所示:

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>';
echo'
  • 发生这种情况是因为浏览器会认为哈希是用于共享页面(fb上的页面)而不是共享链接上的页面

    如果没有urlencode,共享URL将是:

    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


    这最终会被解释为一个ok链接。

    删除/在散列之前尝试。就这么做了。没有任何更改。“为什么?”-因为您忽略了应用正确的URL编码。请提供有关正确URL编码的详细信息?非常感谢。