2013-08-13 4 views
0

Я пытаюсь отправить классический запрос GET в API: http://mywebsite.com?arg1=val1&arg2=val2. Проблема заключается в том, что я не знаю, что делать, если val1 или val2 содержит "&" или "?" персонаж. Я знаю функцию urlencode(), но я не уверен, что это поможет в этом случае, так как должна быть разница между «&», используемой для разделения аргументов, и «&», содержащейся в аргументах.Как передать специальные символы в URL-адрес

Может ли кто-нибудь помочь? Thanks

ответ

1

Наконец-то я нашел гораздо более простое решение. UrlEncode() сделал трюк:

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

Спасибо всем за ваши ответы.

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 
+0

Спасибо, я не пробовал, но это должно сработать. Я использовал более простой код с urlencode(). –

1

, если передать эти переменные вручную, вы должны UrlEncode(), если нет, то браузер будет делать это автоматически.

Кроме того, для PHP стороны, нет необходимости urldecode(), потому что PHP будет делать это за $ _GET, $ _COOKIE, $ _POST

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" 
Смежные вопросы