PHP開発では、URLクエリ文字列と配列の間の相互変換にしばしば対処します。たとえば、フロントエンドのフォームを介して送信されたデータは、クエリ文字列の形式でバックエンドに渡され、バックエンド処理中に、データを操作するために配列に変換する必要があることがよくあります。それどころか、URLを構築するときは、配列をクエリ文字列に変換する必要があります。
PHPは、この関数を実装するためのhttp_build_queryとparse_strの2つの非常に便利な機能を提供します。
http_build_query関数は、配列をURLエンコードされたクエリ文字列に変換できます。一般に、GETリクエストのパラメーターを構築するために使用されます。
<span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-title function_ invoke__">http_build_query</span></span><span>(</span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-variable">$data</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$numeric_prefix</span></span><span> = </span><span><span class="hljs-string">""</span></span><span>, ?</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$arg_separator</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$encoding_type</span></span><span> = PHP_QUERY_RFC1738)
</span></span>
<span><span><span class="hljs-variable">$params</span></span><span> = [
</span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'チャン・サン'</span></span><span>,
</span><span><span class="hljs-string">'age'</span></span><span> => </span><span><span class="hljs-number">25</span></span><span>,
</span><span><span class="hljs-string">'hobbies'</span></span><span> => [</span><span><span class="hljs-string">'reading'</span></span><span>, </span><span><span class="hljs-string">'coding'</span></span><span>]
];
</span><span><span class="hljs-variable">$queryString</span></span><span> = </span><span><span class="hljs-title function_ invoke__">http_build_query</span></span><span>(</span><span><span class="hljs-variable">$params</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$queryString</span></span><span>;
</span></span>
<span><span>name=%E5%BC%A</span><span><span class="hljs-number">0</span></span><span>%E4%B8%89&age=</span><span><span class="hljs-number">25</span></span><span>&hobbies%5B</span><span><span class="hljs-number">0</span></span><span>%5D=reading&hobbies%5B1%5D=coding
</span></span>
注:デフォルトでは、趣味[0] = Reading&Hobbies [1] = Codingなど、アレイは添え字形式にシリアル化されます。
カスタムデリミッターまたはエンコードメソッドが必要な場合は、制御に追加のパラメーターを使用できます。たとえば、区切り文字をセミコロンに変更します。
<span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">http_build_query</span></span><span>(</span><span><span class="hljs-variable">$params</span></span><span>, </span><span><span class="hljs-string">''</span></span><span>, </span><span><span class="hljs-string">';'</span></span><span>);
</span></span>
出力結果:
<span><span>name=%E5%BC%A</span><span><span class="hljs-number">0</span></span><span>%E4%B8%89;age=</span><span><span class="hljs-number">25</span></span><span>;hobbies%5B</span><span><span class="hljs-number">0</span></span><span>%5D=reading;hobbies%5B1%5D=coding
</span></span>
Parse_Str関数は、URLクエリ文字列を配列または変数に解析でき、GETリクエストまたはカスタム文字列を解析するためによく使用されます。
<span><span><span class="hljs-keyword">void</span></span><span> </span><span><span class="hljs-title function_ invoke__">parse_str</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-keyword">array</span></span><span> &</span><span><span class="hljs-variable">$result</span></span><span>)
</span></span>
<span><span><span class="hljs-variable">$query</span></span><span> = </span><span><span class="hljs-string">'name=%E5%BC%A0%E4%B8%89&age=25&hobbies%5B0%5D=reading&hobbies%5B1%5D=coding'</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">parse_str</span></span><span>(</span><span><span class="hljs-variable">$query</span></span><span>, </span><span><span class="hljs-variable">$output</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$output</span></span><span>);
</span></span>
<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[name] => チャン・サン
[age] => </span><span><span class="hljs-number">25</span></span><span>
[hobbies] => </span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[</span><span><span class="hljs-number">0</span></span><span>] => reading
[</span><span><span class="hljs-number">1</span></span><span>] => coding
)
)
</span></span>
注: Parse_Strはデフォルトで変数を現在のスコープに割り当てます。2番目のパラメーターが提供されていない場合、変数は変数名として現在のスコープに表示されます。
フロントエンドフォームシミュレーション:配列をクエリ文字列に変換し、GETリクエストをシミュレートします。
URL書き換えとジャンプ:動的URLを生成するときにパラメーターを構築します。
インターフェイスリクエスト:APIリクエストを送信するときのスプライスパラメーター。
パラメーターデバッグツール:パラメーター文字列の構築または解析デバッグリターンに使用されます。
http_build_queryおよびparse_strを使用すると、配列とURLクエリ文字列の間で互いに簡単に変換できます。これらの2つの機能は、シンプルで使いやすいだけでなく、強力です。これらは、毎日のPHP開発におけるパラメーター転送を処理するための不可欠なツールです。それらをマスターすると、URL-DATA相互作用の処理効率を大幅に向上させることができます。