Dans le développement de PHP, nous traitons souvent la conversion mutuelle entre les chaînes de requête et les tableaux de requête URL. Par exemple, les données soumises par le formulaire dans le frontal seront transmises à l'extrémité arrière sous la forme d'une chaîne de requête, et pendant le traitement à l'arrière, il est souvent nécessaire de les convertir en un tableau pour manipuler les données; Au contraire, lors de la construction de l'URL, le tableau doit être reconverti en chaîne de requête.
PHP nous fournit deux fonctions très pratiques: http_build_query et parse_str pour implémenter cette fonction.
La fonction http_build_query peut convertir un tableau en une chaîne de requête codée par URL. Couramment utilisé pour construire des paramètres pour les demandes de 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">'Zhang San'</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>
Remarque: Par défaut, le tableau sera sérialisé dans un format d'indice, tel que les loisirs [0] = Reading & Hobbies [1] = codage .
Si vous avez besoin d'un délimiteur personnalisé ou d'une méthode de codage, vous pouvez utiliser des paramètres supplémentaires pour le contrôle. Par exemple, modifiez le délimiteur en demi-colonne:
<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>
Résultat de sortie:
<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>
La fonction PARSE_STR peut analyser les chaînes de requête de l'URL en tableaux ou variables, et est souvent utilisée pour analyser les demandes ou les chaînes personnalisées.
<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] => Zhang San
[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>
Remarque: PARSE_STR affectera les variables à la portée actuelle par défaut, et si le deuxième paramètre n'est pas fourni, la variable apparaîtra dans la portée actuelle en tant que nom de variable, qui peut provoquer un écrasement de variable dans certains cas, il est donc recommandé de toujours fournir le deuxième paramètre comme tableau cible.
Simulation de formulaire frontal : convertit les tableaux en chaînes de requête, simule les demandes de reçus.
Réécrivez et saut à l'URL : construire des paramètres lors de la génération d'URL dynamiques.
Demande d'interface : épisser les paramètres lors de l'envoi de la demande d'API.
Outil de débogage des paramètres : Utilisé pour créer des chaînes de paramètres ou analyser les rendements de débogage.
Avec http_build_query et parse_str , nous pouvons facilement nous convertir entre les tableaux et les chaînes de requête d'URL. Ces deux fonctions sont non seulement simples et faciles à utiliser, mais aussi puissantes. Ce sont des outils indispensables pour gérer le transfert de paramètres dans le développement quotidien de PHP. Les maîtriser peut considérablement améliorer notre efficacité dans la gestion des interactions URL-Data.