如何通过特殊字符的URL(How to pass special characters in a U

2019-10-18 12:10发布

我试图发送一个经典的GET请求的API: http://mywebsite.com?arg1=val1&arg2=val2 。 问题是我不知道该怎么做,如果VAL1 VAL2或包含一个“&”或“?” 字符。 我知道用urlencode()函数,但我不知道这将有助于在这种情况下,需要有之间的差异“和”所使用的参数的参数和“&”载分开。

任何人都可以帮忙吗? 谢谢

Answer 1:

也许你可以尝试使用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


Answer 2:

如果您手动传递这些变量,你必须用urlencode(),如果没有,浏览器会自动为你做这个。

此外,对于PHP端,无需urldecode(),因为PHP会做它_GET,$ _ COOKIE,$ _ POST



Answer 3:

我终于找到了一个更简单的解决方案。 进行urlencode()的伎俩:

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

谢谢大家的回复。



Answer 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"


Answer 5:

它的工作好,我是用简单的编码/解码这在一般忽略! 或任何其他特殊符号。 BASE64_ENCODE做到这一点。



文章来源: How to pass special characters in a URL