我正在尝试向 API 发送经典 GET 请求:http ://mywebsite.com?arg1=val1&arg2=val2 。问题是如果val1或val2包含“&”或“?” ,我不知道该怎么办。特点。我知道urlencode()函数,但我不确定它在这种情况下是否会有所帮助,因为用于分隔参数的“&”和参数包含的“&”之间需要有区别。
任何人都可以帮忙吗?谢谢
我正在尝试向 API 发送经典 GET 请求:http ://mywebsite.com?arg1=val1&arg2=val2 。问题是如果val1或val2包含“&”或“?” ,我不知道该怎么办。特点。我知道urlencode()函数,但我不确定它在这种情况下是否会有所帮助,因为用于分隔参数的“&”和参数包含的“&”之间需要有区别。
任何人都可以帮忙吗?谢谢
我终于找到了一个更简单的解决方案。urlencode()成功了:
$url = 'http://mywebsite.com?arg1='.urlencode('val1').'arg2='.urlencode('val2').......
谢谢大家的回复。
也许你可以尝试使用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 执行此操作
我个人会这样做:
$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 执行此操作。