Lors du développement d'applications Web, la gestion des paramètres URL est une exigence très courante. Vous devrez peut-être ajouter de nouveaux paramètres, modifier les paramètres existants ou supprimer certains paramètres. Dans PHP, parse_url () et http_build_query () sont deux fonctions très pratiques qui peuvent vous aider à effectuer ces tâches facilement.
Cet article présentera comment utiliser parse_url () pour décomposer les URL, puis utiliser parse_str () et http_build_query () pour modifier les paramètres, et enfin reconstruire l'URL complète.
parse_url () peut démonter une URL en plusieurs parties, telles que le schéma (protocole), l'hôte (hôte), le chemin (chemin), la requête (chaîne de requête), etc. par exemple:
$url = "https://gitbox.net/search?q=php&page=2";
$parts = parse_url($url);
print_r($parts);
Sortir:
Array
(
[scheme] => https
[host] => gitbox.net
[path] => /search
[query] => q=php&page=2
)
Pour modifier les paramètres de requête, vous devez d'abord analyser la partie de requête dans un tableau associatif. Vous pouvez utiliser parse_str () :
parse_str($parts['query'], $queryParams);
À ce stade, $ queryparams est:
Array
(
[q] => php
[page] => 2
)
Vous pouvez faire fonctionner des paramètres comme le fonctionnement d'un tableau normal:
$queryParams['page'] = 3; // Modifier les paramètres
$queryParams['lang'] = 'zh'; // Ajouter des paramètres
unset($queryParams['q']); // Supprimer les paramètres
Utilisez http_build_query () pour transformer le tableau de paramètres en une chaîne:
$newQuery = http_build_query($queryParams);
Ensuite, épissez la nouvelle chaîne de requête sur l'URL d'origine:
$newUrl = $parts['scheme'] . '://' . $parts['host'] . $parts['path'] . '?' . $newQuery;
echo $newUrl;
Sortir:
https://gitbox.net/search?page=3&lang=zh
Ce qui suit est une fonction complète qui peut passer dans l'URL d'origine et les paramètres à modifier, et renvoyer l'URL modifiée:
function modify_url_params($url, $modifications = [], $remove = []) {
$parts = parse_url($url);
parse_str($parts['query'] ?? '', $queryParams);
// Appliquer la modification
foreach ($modifications as $key => $value) {
$queryParams[$key] = $value;
}
// Supprimer les paramètres
foreach ($remove as $key) {
unset($queryParams[$key]);
}
$newQuery = http_build_query($queryParams);
$newUrl = $parts['scheme'] . '://' . $parts['host'];
if (isset($parts['path'])) {
$newUrl .= $parts['path'];
}
if ($newQuery) {
$newUrl .= '?' . $newQuery;
}
return $newUrl;
}
// Exemple d'appel
$originalUrl = "https://gitbox.net/search?q=php&page=2";
$newUrl = modify_url_params($originalUrl, ['page' => 1, 'lang' => 'zh'], ['q']);
echo $newUrl;
Sortir:
https://gitbox.net/search?page=1&lang=zh
En combinant parse_url () , parse_str () et http_build_query () , nous pouvons ajouter, modifier, modifier et supprimer les paramètres de requête URL. Cette méthode est non seulement claire, mais également adaptée à divers scénarios pratiques, tels que la gestion des liens de redirection, la logique de pagination, les conditions de filtrage dynamique, etc. La maîtrise de ces techniques améliorera considérablement votre efficacité et votre maintenabilité de votre code lors du traitement des URL.
Étiquettes associées:
URL