代码之家  ›  专栏  ›  技术社区  ›  Salem Ouerdani

http生成查询的意外输出(&=>ms)

php
  •  1
  • Salem Ouerdani  · 技术社区  · 7 年前

    $params = [
        'a' => 'x',
        'b' => 'y'
    ];
    $url = http_build_query(['params' => $params]);
    echo urldecode($url);
    

    我期待这个结果:

    params[a]=x&params[b]=y
    

    但我得到的却是:

    params[a]=x¶ms[b]=y
    

    我也尝试过:

    http_build_query(['params' => $params], '', '&');
    http_build_query(['params' => $params], null, '&', PHP_QUERY_RFC3986);
    http_build_query(['params' => $params], null, ini_get('arg_separator.output'), PHP_QUERY_RFC3986);
    

    以及:

    $params = [
        'params[a]' => 'x',
        'params[b]' => 'y'
    ];
    

    但我总是得到同样的结果。我做错什么了吗?是我的服务器吗?


    遵循@Sammitch的建议:

    var_dump($url, bin2hex($url), urldecode($url), bin2hex(urldecode($url)));
    

    输出:

    string(31) "params%5Ba%5D=x&params%5Bb%5D=y"
    string(62) "706172616d73253542612535443d7826706172616d73253542622535443d79"
    string(23) "params[a]=x&params[b]=y"
    string(46) "706172616d735b615d3d7826706172616d735b625d3d79"
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   Rinsad Ahmed    7 年前

    你在这里的看法是正确的

    params[a]=x¶ms[b]=y
    

    作为

    &para 
    

    ¶
    

    因此

    &params 
    

    变成

    ¶ms
    

    如果你仍然想看到它的方式,你想做一个小的改变,回声只如下

    echo str_replace('&','<span>&</span>',urldecode($url)).'</code>';
    
    推荐文章