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

时间:2017-05-24 08:57:33

标签: php jquery facebook facebook-graph-api hash

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

2 个答案:

答案 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

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