En PHP, la gestion des paramètres d'URL est une tâche courante, surtout lorsque nous devons générer et modifier dynamiquement les URL en fonction des différents besoins. La fonction http_build_query et le tableau $ _get sont deux outils courants qui nous aident à construire facilement les paramètres d'URL. Aujourd'hui, nous discuterons de la façon de combiner les deux pour utiliser un moyen plus simple d'épisser et de manipuler les paramètres d'URL.
HTTP_BUILD_QUERY est une fonction intégrée en PHP qui prend un tableau associatif ou un tableau multidimensionnel et le convertit en une chaîne de requête URL. Cette fonction vous aide non seulement à générer rapidement des paramètres de requête, mais code automatiquement des URL pour vous assurer que la chaîne de requête est conforme aux normes d'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 : Un tableau associatif contenant des paires de valeurs clés sera converti en une chaîne de requête.
$ Numeric_prefix : Si les touches du tableau sont des numéros, vous pouvez choisir de préfixer ces clés.
$ arg_separator : spécifie le séparateur entre plusieurs paramètres, par défaut est & .
Supposons que nous ayons un tableau contenant plusieurs paramètres, comment épisser ces paramètres dans une chaîne de requête URL complète? À l'heure actuelle, HTTP_BUILD_QUERY peut vous aider.
<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">// Épissage URL paramètre</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">// Sortir: search=PHP&page=2&sort=asc&category=programming</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Grâce à cette méthode, nous pouvons facilement générer une chaîne de requête standard.
Parfois, nous devons ajouter la chaîne de requête épissée à une URL de base existante. Cela peut être réalisé en ajoutant simplement la chaîne de requête à l'URL sous-jacente.
<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">// Épissage查询字符串</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">// Complet 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">// Sortir: 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 est un tableau hyperglobal PHP qui obtient la valeur d'une chaîne de requête dans l'URL. Lorsqu'un utilisateur accède à une URL avec des paramètres de requête, $ _get analyse automatiquement ces paramètres dans un tableau. Par exemple, lors de la visite de https://example.com/?search=php&page=2 , vous pouvez obtenir la valeur de la recherche de paramètres via $ _get ['search'] .
Supposons que nous voulons obtenir tous les paramètres dans l'URL actuelle et modifier ou ajouter de nouveaux paramètres au besoin.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Supposons que le courant URL pour: https://example.com/?search=PHP&page=2</span></span><span>
</span><span><span class="hljs-comment">// $_GET 数组会自动包含查询paramètre</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">// 添加新的paramètre</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">// utiliser http_build_query Épissage更新后的查询字符串</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">// Sortir: search=PHP&page=2&sort=desc</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Parfois, nous voulons simplement modifier un certain paramètre dans l'URL au lieu de reconstruire toute la chaîne de requête. Vous pouvez générer une nouvelle chaîne de requête en modifiant la clé correspondante dans le tableau $ _get , puis en utilisant http_build_query .
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Supposons que le courant URL pour: https://example.com/?search=PHP&page=2</span></span><span>
</span><span><span class="hljs-comment">// 获取当前paramètre</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">// 修改某个paramètre</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">// utiliser http_build_query Générer une nouvelle chaîne de requête</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">// Sortir: search=PHP&page=3</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
HTTP_BUILD_QUERY prend également en charge le traitement des tableaux multidimensionnels. Si vous avez un tableau imbriqué, la fonction l'aplatira automatiquement et générera une chaîne de requête conforme aux critères.
<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">// utiliser http_build_query Épissage多维数组</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">// Sortir: search=PHP&filters%5Bcategory%5D=programming&filters%5Bprice%5D=low</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Dans cet exemple, HTTP_BUILD_QUERY traite automatiquement les tableaux imbriqués et génère des résultats conformes au format de chaîne de requête URL.
HTTP_BUILD_QUERY et $ _GET Les tableaux sont des outils très pratiques en PHP, nous aidant à simplifier le traitement des paramètres d'URL. En utilisant ces outils raisonnablement, nous pouvons épisser efficacement les paramètres URL, modifier les paramètres existants et même traiter des tableaux multidimensionnels complexes. La maîtrise de ces compétences vous permettra d'atteindre deux fois le résultat avec la moitié de l'effort pendant le processus de développement.