我试图发送一个经典的GET请求的API: http://mywebsite.com?arg1=val1&arg2=val2 。 问题是我不知道该怎么做,如果VAL1 VAL2或包含一个“&”或“?” 字符。 我知道用urlencode()函数,但我不知道这将有助于在这种情况下,需要有之间的差异“和”所使用的参数的参数和“&”载分开。
任何人都可以帮忙吗? 谢谢
我试图发送一个经典的GET请求的API: http://mywebsite.com?arg1=val1&arg2=val2 。 问题是我不知道该怎么做,如果VAL1 VAL2或包含一个“&”或“?” 字符。 我知道用urlencode()函数,但我不知道这将有助于在这种情况下,需要有之间的差异“和”所使用的参数的参数和“&”载分开。
任何人都可以帮忙吗? 谢谢
也许你可以尝试使用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(),如果没有,浏览器会自动为你做这个。
此外,对于PHP端,无需urldecode(),因为PHP会做它_GET,$ _ COOKIE,$ _ POST
我终于找到了一个更简单的解决方案。 进行urlencode()的伎俩:
$url = 'http://mywebsite.com?arg1='.urlencode('val1').'arg2='.urlencode('val2').......
谢谢大家的回复。
我个人这样做:
$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"
它的工作好,我是用简单的编码/解码这在一般忽略! 或任何其他特殊符号。 BASE64_ENCODE做到这一点。