php - PHP 5.4 之前使用 PHP_QUERY_RFC3986 的 HTTP 构建查询

标签 php http

我以为我可以使用简单的 http_build_query 来编码数组中的一些 GET 参数,但显然 enc_type 似乎已添加到 PHP 5.4 中。不幸的是,我使用的是 PHP 5.3.10。

问题是我需要用空格编码的参数是 %20 而不是 +。在不使用 http_build_query 的情况下正确编码参数的任何好的快速解决方案?

最佳答案

由于 URL 在 http_build_query 返回时被编码,所以 + 总是且只是空格,你可以用 str_replace 链接它:

$query = str_replace('+', '%20', http_build_query($arr));

如果你不想对 ~ 也进行编码:

$query = str_replace(
    array('+', '%7E'), 
    array('%20', '~'), 
    http_build_query($arr)
);

关于php - PHP 5.4 之前使用 PHP_QUERY_RFC3986 的 HTTP 构建查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9265192/

相关文章:

php - 如何从mysql中的逗号分隔列值进行搜索

c - 在 HTTP 服务器中发出文件结束信号

perl - 如何在 Perl 中对 HTTP GET 查询字符串进行编码?

angularjs - 以 angularjs 形式发布的 http 帖子

php - 在 PHP 中解析 WordPress stdClass 数据

php - 仅允许 X 嵌套标签

php - 如何mysql GROUP_CONCAT

PHP 文件存在性检查与 MySQL SELECT 服务器负载

performance - 我可以在一个 Windows Server 2008 机器中打开的最大 HTTP 连接数是多少?

http - 如何在客户端和服务器中使用 HTTP/1.x