【问题标题】:How to pass special characters in a URL如何在 URL 中传递特殊字符
【发布时间】:2013-08-13 18:17:32
【问题描述】:

我正在尝试向 API 发送经典 GET 请求:http://mywebsite.com?arg1=val1&arg2=val2。 问题是如果 val1val2 包含“&”或“?”,我不知道该怎么办。特点。我知道 urlencode() 函数,但我不确定它在这种情况下会有所帮助,因为用于分隔参数的“&”和包含的“&”之间需要有区别论据。

有人可以帮忙吗? 谢谢

【问题讨论】:

    标签: php url character-encoding


    【解决方案1】:

    我终于找到了一个更简单的解决方案。 urlencode() 成功了:

    $url = 'http://mywebsite.com?arg1='.urlencode('val1').'arg2='.urlencode('val2').......
    

    谢谢大家的回复。

    【讨论】:

      【解决方案2】:

      也许您可以尝试使用http_build_query()

      http://php.net/http_build_query

      $data = array('foo'=>'bar',
                    'baz'=>'a&c',
                    'cow'=>'d?f');
      
      echo http_build_query($data); // foo=bar&baz=a%26c&cow=d%3Ff
      

      【讨论】:

      • 谢谢,我没试过,但这应该可以。不过,我使用了一个更简单的 urlencode() 代码。
      【解决方案3】:

      如果你手动传递这些变量,你应该 urlencode(),如果没有,浏览器会自动为你做这些。

      另外,对于 PHP 端,不需要 urldecode(),因为 PHP 会为 $_GET、$_COOKIE、$_POST 执行此操作

      【讨论】:

        【解决方案4】:

        我会亲自这样做:

        $your_array = array('1'=>'something', '2'=>'another thing!');
        $send_in_url = json_encode($your_array);
        $send_in_url = base64_encode($send_in_url);
        
        header('Location: www.mywebsite.com?code='.$send_in_url);
        

        在您的 API 中,您将执行以下操作:

        $code = base64_decode($_GET['code']);
        $array = json_decode($code);
        
        echo $array[1]; // this will output "something"
        

        【讨论】:

          【解决方案5】:

          效果很好,我使用的是通常忽略的简单编码/解码!或任何其他特殊符号。 base64_encode 就是这样做的。

          【讨论】:

            猜你喜欢
            • 2015-03-13
            • 2014-02-07
            • 2015-02-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多