質問: PHPに`http_build_query`という関数があります。 この関数に値が配列の配列を渡すと、戻り値のクエリ文字列の角括弧の部分がエスケープされています。 コード ``` array(1, 2, 3))); echo $query; ``` 実行結果 ``` hoge%5B0%5D=1&hoge%5B1%5D=2&hoge%5B2%5D=3 ``` マニュアルによると、バージョン5.1.3から角括弧がエスケープされるようになったとあります。 角括弧がエスケープされているとURLが長くなって汚く見えてしまうので、エスケープされていないほうが好きなのですが、**角括弧もエスケープされていたほうがいいのですか?**
回答: RFC3986 において予約文字となっているそうです。 【encodeURI() - JavaScript | MDN】 > > また、URL 記述のための最近の RFC3986 仕様に従いたい場合、角括弧 [] は (IPv6 用の) 予約文字となっているため、角括弧が (ホスト名など) URL の一部を形成している場合はエンコードされていないほうがよいでしょう。 > > > 【URIで使用できる文字 - CyberLibrarian】