我如何编码url进行Facebook共享

时间:2017-11-17 20:34:05

标签: php facebook share

我正在使用这样的JScript代码:

shareLink = function (link) {

    FB.ui({
        method: 'share',
        display: 'popup',
        href: link,
    }, function(response){});

}

并在这样的行中调用它:

<?php
$sharedata = " ... parameters ... "
?>

<a href="javascript:shareLink('http://<?php echo $site; ?>/?v=<?php echo rawurlencode($sharelink); ?>');">

因此,目标脚本使用以下命令转换参数:

$str = rawurldecode($_GET["v"]);

问题是当网址有“+”字符时 使用rawurlencode将其转换为“%2B”

zcu0xci%2FFMH2%2B7cLDPVP%2BgD7%2FwQJ%2FFT2Bw%3D%3D

但facebook再次将“%2B”更改为“+”符号:

zcu0xci%2FFMH2+7cLDPVP+gD7%2FwQJ%2FFT2Bw%3D%3D

我的脚本无法识别它

修改

如果我回应“v”参数我得到

zcu0xci/FMH2 7cLDPVP gD7/wQJ/FT2Bw==

而不是

zcu0xci/FMH2+7cLDPVP+gD7/wQJ/FT2Bw==

SOLUTION:

我发现的解决方案是在解码前用“+”替换空格

$str = str_replace(" ","+",$str);

1 个答案:

答案 0 :(得分:0)

您无需在rawurldecode() 超全局变量的元素上使用$_GET。 PHP为您解码URL数据。

此外,您通常应使用urlencode()对查询字符串数据进行编码。如果你研究这两个函数之间的区别,你会发现urlencode()会将任何空格字符转换为“+”字符。这可能是您遇到的问题。

我很难理解你问题的其余部分。你可能需要处理你的措辞。