PHPでは、特にさまざまなニーズに応じてURLを動的に生成および変更する必要がある場合、URLパラメーターの処理は一般的なタスクです。 http_build_query関数と$ _getアレイは、URLパラメーターを簡単に構築するのに役立つ2つの一般的なツールです。今日は、両方を組み合わせて、より簡単な方法を使用してURLパラメーターを操作する方法について説明します。
http_build_queryは、連想配列または多次元配列を採取し、それをURLクエリ文字列に変換するPHPの組み込み関数です。この機能は、クエリパラメーターをすばやく生成するだけでなく、URLを自動的にエンコードして、クエリ文字列がURL標準に準拠していることを確認します。
<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">$query_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-string">"&"</span></span><span> ]] )
</span></span>
$ query_data :キー値ペアを含む関連配列は、クエリ文字列に変換されます。
$ numeric_prefix :配列内のキーが数字の場合、それらのキーをプレフィックスすることを選択できます。
$ arg_separator :複数のパラメーターの間でセパレーターを指定します。デフォルトは&です。
複数のパラメーターを含む配列があるとしましょう。これらのパラメーターを完全なURLクエリ文字列にどのようにスプライスするのですか?この時点で、 http_build_queryが役立ちます。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$params</span></span><span> = [
</span><span><span class="hljs-string">'search'</span></span><span> => </span><span><span class="hljs-string">'PHP'</span></span><span>,
</span><span><span class="hljs-string">'page'</span></span><span> => </span><span><span class="hljs-number">2</span></span><span>,
</span><span><span class="hljs-string">'sort'</span></span><span> => </span><span><span class="hljs-string">'asc'</span></span><span>,
</span><span><span class="hljs-string">'category'</span></span><span> => </span><span><span class="hljs-string">'programming'</span></span><span>
];
</span><span><span class="hljs-comment">// スプライシング URL パラメーター</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 class="hljs-comment">// 出力: search=PHP&page=2&sort=asc&category=programming</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
この方法により、標準クエリ文字列を簡単に生成できます。
スプライスされたクエリ文字列を既存の基本URLに追加する必要がある場合があります。これは、クエリ文字列を基礎となるURLに追加するだけで実現できます。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$baseURL</span></span><span> = </span><span><span class="hljs-string">"https://example.com/products?"</span></span><span>;
</span><span><span class="hljs-variable">$params</span></span><span> = [
</span><span><span class="hljs-string">'search'</span></span><span> => </span><span><span class="hljs-string">'PHP'</span></span><span>,
</span><span><span class="hljs-string">'page'</span></span><span> => </span><span><span class="hljs-number">2</span></span><span>,
</span><span><span class="hljs-string">'sort'</span></span><span> => </span><span><span class="hljs-string">'asc'</span></span><span>,
</span><span><span class="hljs-string">'category'</span></span><span> => </span><span><span class="hljs-string">'programming'</span></span><span>
];
</span><span><span class="hljs-comment">// スプライシング查询字符串</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-comment">// 完了 URL</span></span><span>
</span><span><span class="hljs-variable">$fullURL</span></span><span> = </span><span><span class="hljs-variable">$baseURL</span></span><span> . </span><span><span class="hljs-variable">$queryString</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$fullURL</span></span><span>;
</span><span><span class="hljs-comment">// 出力: https://example.com/products?search=PHP&page=2&sort=asc&category=programming</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
$ _GETは、 URL内のクエリ文字列の値を取得するPHPハイパーグローバルアレイです。ユーザーがクエリパラメーターを使用してURLにアクセスすると、 $ _GETはこれらのパラメーターをアレイに自動的に解析します。たとえば、 https://example.com/? search=php&page=2にアクセスする場合、 $ _get ['search']を介してパラメーター検索の値を取得できます。
現在のURLですべてのパラメーターを取得し、必要に応じて新しいパラメーターを変更または追加する必要があるとします。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 電流を仮定します URL のために: https://example.com/?search=PHP&page=2</span></span><span>
</span><span><span class="hljs-comment">// $_GET 数组会自动包含查询パラメーター</span></span><span>
</span><span><span class="hljs-variable">$currentParams</span></span><span> = </span><span><span class="hljs-variable">$_GET</span></span><span>;
</span><span><span class="hljs-comment">// 添加新的パラメーター</span></span><span>
</span><span><span class="hljs-variable">$currentParams</span></span><span>[</span><span><span class="hljs-string">'sort'</span></span><span>] = </span><span><span class="hljs-string">'desc'</span></span><span>;
</span><span><span class="hljs-comment">// 使用 http_build_query スプライシング更新后的查询字符串</span></span><span>
</span><span><span class="hljs-variable">$newQueryString</span></span><span> = </span><span><span class="hljs-title function_ invoke__">http_build_query</span></span><span>(</span><span><span class="hljs-variable">$currentParams</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$newQueryString</span></span><span>;
</span><span><span class="hljs-comment">// 出力: search=PHP&page=2&sort=desc</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
クエリ文字列全体を再構築する代わりに、URLの特定のパラメーターを変更するだけです。 $ _getアレイの対応するキーを変更し、 http_build_queryを使用することにより、新しいクエリ文字列を生成できます。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 電流を仮定します URL のために: https://example.com/?search=PHP&page=2</span></span><span>
</span><span><span class="hljs-comment">// 获取当前パラメーター</span></span><span>
</span><span><span class="hljs-variable">$currentParams</span></span><span> = </span><span><span class="hljs-variable">$_GET</span></span><span>;
</span><span><span class="hljs-comment">// 修改某个パラメーター</span></span><span>
</span><span><span class="hljs-variable">$currentParams</span></span><span>[</span><span><span class="hljs-string">'page'</span></span><span>] = </span><span><span class="hljs-number">3</span></span><span>;
</span><span><span class="hljs-comment">// 使用 http_build_query 新しいクエリ文字列を生成します</span></span><span>
</span><span><span class="hljs-variable">$newQueryString</span></span><span> = </span><span><span class="hljs-title function_ invoke__">http_build_query</span></span><span>(</span><span><span class="hljs-variable">$currentParams</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$newQueryString</span></span><span>;
</span><span><span class="hljs-comment">// 出力: search=PHP&page=3</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
http_build_queryは、多次元配列の処理もサポートしています。ネストされた配列がある場合、関数は自動的に平らになり、基準に準拠するクエリ文字列を生成します。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$params</span></span><span> = [
</span><span><span class="hljs-string">'search'</span></span><span> => </span><span><span class="hljs-string">'PHP'</span></span><span>,
</span><span><span class="hljs-string">'filters'</span></span><span> => [
</span><span><span class="hljs-string">'category'</span></span><span> => </span><span><span class="hljs-string">'programming'</span></span><span>,
</span><span><span class="hljs-string">'price'</span></span><span> => </span><span><span class="hljs-string">'low'</span></span><span>
]
];
</span><span><span class="hljs-comment">// 使用 http_build_query スプライシング多维数组</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 class="hljs-comment">// 出力: search=PHP&filters%5Bcategory%5D=programming&filters%5Bprice%5D=low</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
この例では、 http_build_queryはネストされた配列を自動的に処理し、URLクエリ文字列形式に準拠する結果を生成します。
http_build_queryと$ _getアレイは、PHPの非常に実用的なツールであり、URLパラメーターの処理を簡素化するのに役立ちます。これらのツールを合理的に使用することにより、URLパラメーターを効率的にスプライスし、既存のパラメーターを変更し、複雑な多次元配列を処理することさえできます。これらのスキルを習得することで、開発プロセス中の努力の半分で結果の2倍を達成できます。