【发布时间】:2017-11-17 20:34:04
【问题描述】:
我正在使用这样的 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); ?>');">
所以,目标脚本的 trasform 参数使用:
$str = rawurldecode($_GET["v"]);
问题是当 url 有一个“+”字符时
使用 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==
解决方案:
我找到的解决方案是在解码之前用“+”替换空格
$str = str_replace(" ","+",$str);
【问题讨论】:
-
我相信您的解决方案过于复杂。请看下面我的回答!
-
它不起作用