在PHP 5.4之前使用PHP_QUERY_RFC3986进行HTTP构建查询

Svi*_*ish 8 php http

我以为我可以使用easy http_build_query来编码来自数组的一些GET参数,但显然enc_type似乎已经在PHP 5.4中添加了.不幸的是我在PHP 5.3.10上.

问题是,我需要用空格被编码的参数%20,而不是+.没有使用任何正确编码参数的好快速解决方案http_build_query

net*_*der 17

由于URL在http_build_query返回时被编码,因此+始终只有空格,您可以将其链接为str_replace:

$query = str_replace('+', '%20', http_build_query($arr));
Run Code Online (Sandbox Code Playgroud)

如果你不想编码那么~:

$query = str_replace(
    array('+', '%7E'), 
    array('%20', '~'), 
    http_build_query($arr)
);
Run Code Online (Sandbox Code Playgroud)