【问题标题】:How I have to encode url for Facebook sharing我如何为 Facebook 分享编码 url
【发布时间】: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);

【问题讨论】:

  • 我相信您的解决方案过于复杂。请看下面我的回答!
  • 它不起作用

标签: php facebook share


【解决方案1】:

您不需要在$_GET super-global 变量的元素上使用rawurldecode()。 PHP 为您解码 URL 数据。

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

我很难理解您问题的其余部分。您可能需要改进措辞。

【讨论】:

  • 对不起,如果你不明白,英语不是我的母语
  • @LeonardoJavier,别担心!我希望我至少能提供一点帮助。
  • 使用或不使用rawurldecode()函数我有同样的结果,“+”被转换成空格
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多