我正在使用这样的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);
答案 0 :(得分:0)
您无需在rawurldecode()
超全局变量的元素上使用$_GET
。 PHP为您解码URL数据。
此外,您通常应使用urlencode()
对查询字符串数据进行编码。如果你研究这两个函数之间的区别,你会发现urlencode()会将任何空格字符转换为“+”字符。这可能是您遇到的问题。
我很难理解你问题的其余部分。你可能需要处理你的措辞。