如何在URL中传递特殊字符

时间:2013-08-13 18:17:33

标签: php url character-encoding

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

有人可以帮忙吗? 感谢

5 个答案:

答案 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就是这样做的。

相关问题