我正在尝试向API发送经典的GET请求:http://mywebsite.com?arg1=val1&arg2=val2。 问题是如果 val1 或 val2 包含“&”,我不知道该怎么办要么 ”?”字符。我知道 urlencode()函数,但我不确定它在这种情况下是否有用,因为“&”之间需要有区别用来分隔论点和“&”由论据包含。
有人可以帮忙吗? 感谢
答案 0 :(得分: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
答案 1 :(得分:1)
如果您手动传递这些变量,则应该使用urlencode(),否则,浏览器会自动为您执行此操作。
另外,对于PHP方面,不需要urldecode(),因为PHP会为$ _GET,$ _COOKIE,$ _POST
执行此操作答案 2 :(得分:1)
我终于找到了一个更简单的解决方案。 urlencode()做了诀窍:
$url = 'http://mywebsite.com?arg1='.urlencode('val1').'arg2='.urlencode('val2').......
谢谢大家的回复。
答案 3 :(得分:0)
我个人会这样做:
$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"
答案 4 :(得分:0)
效果很好,我使用简单的编码/解码,一般都忽略了!或任何其他特殊符号。 base64_encode就是这样做的。