2017-05-24 52 views
2

this page我有一堆mp3文件顯示爲很好風格的框。PHP:添加元素ID作爲哈希到Facebook共享鏈接

每個盒子都有一個Facebook分享按鈕。我想添加每個方塊ID (mp3jWrap_0, mp3jWrap_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當您單擊分享按鈕。爲什麼?

+0

刪除/散列之前,並嘗試它。 –

+0

剛剛做到了。沒有改變。 –

+0

_「爲什麼?」_ - 因爲您忽略了應用正確的URL編碼。 – CBroe

回答

0

你需要通過$actual_link低谷urlencode() PHP函數。 所以,你的代碼應該是這樣的:

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

,這將最終被解釋爲一個確定的鏈接。

0

你必須進行urlencode $ actual_link