1

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

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

4

5 回答 5

3

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

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

谢谢大家的回复。

于 2013-08-13T18:52:51.450 回答
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
于 2013-08-13T18:22:16.653 回答
1

如果您手动传递这些变量,您应该使用 urlencode(),如果没有,浏览器会自动为您执行此操作。

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

于 2013-08-13T18:24:31.580 回答
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"
于 2013-08-13T18:38:21.830 回答
0

它运作良好,我使用的是通常忽略的简单编码/解码!或任何其他特殊符号。base64_encode 执行此操作。

于 2018-05-23T02:41:07.357 回答