Bei der Entwicklung von Webanwendungen ist die Verwaltung von URL -Parametern eine sehr häufige Voraussetzung. Möglicherweise müssen Sie neue Parameter hinzufügen, vorhandene Parameter ändern oder bestimmte Parameter löschen. In PHP sind Parse_url () und http_build_query () zwei sehr praktische Funktionen, mit denen Sie diese Aufgaben leicht erledigen können.
In diesem Artikel wird vorgestellt, wie Sie Parse_url () verwenden, um URLs zu zersetzen, dann Parse_str () und http_build_query () zu ändern, um die Parameter zu ändern und schließlich die vollständige URL wieder aufzubauen.
Parse_url () kann eine URL in mehrere Teile zerlegen, wie z. B. Schema (Protokoll), Host (Host), Pfad (Pfad), Abfrage (Abfragebarstellung) usw. Zum Beispiel:
$url = "https://gitbox.net/search?q=php&page=2";
$parts = parse_url($url);
print_r($parts);
Ausgabe:
Array
(
[scheme] => https
[host] => gitbox.net
[path] => /search
[query] => q=php&page=2
)
Um die Abfrageparameter zu ändern, müssen Sie zuerst den Abfrageteil in ein assoziatives Array analysieren. Sie können Parse_str () verwenden:
parse_str($parts['query'], $queryParams);
Zu diesem Zeitpunkt ist $ queryparams ::
Array
(
[q] => php
[page] => 2
)
Sie können Parameter wie das Betrieb eines normalen Arrays bedienen:
$queryParams['page'] = 3; // Parameter ändern
$queryParams['lang'] = 'zh'; // Parameter hinzufügen
unset($queryParams['q']); // Parameter löschen
Verwenden Sie http_build_query () , um das Parameter -Array wieder in eine Zeichenfolge zu wenden:
$newQuery = http_build_query($queryParams);
Spleißen Sie dann die neue Abfrage -Zeichenfolge zurück zur ursprünglichen URL:
$newUrl = $parts['scheme'] . '://' . $parts['host'] . $parts['path'] . '?' . $newQuery;
echo $newUrl;
Ausgabe:
https://gitbox.net/search?page=3&lang=zh
Das Folgende ist eine vollständige Funktion, die die ursprüngliche URL und die zu ändernden Parameter übergeben und die modifizierte URL zurückgeben kann:
function modify_url_params($url, $modifications = [], $remove = []) {
$parts = parse_url($url);
parse_str($parts['query'] ?? '', $queryParams);
// Änderung anwenden
foreach ($modifications as $key => $value) {
$queryParams[$key] = $value;
}
// Parameter löschen
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;
}
// Beispielanruf
$originalUrl = "https://gitbox.net/search?q=php&page=2";
$newUrl = modify_url_params($originalUrl, ['page' => 1, 'lang' => 'zh'], ['q']);
echo $newUrl;
Ausgabe:
https://gitbox.net/search?page=1&lang=zh
Durch Kombination von Parse_url () , Parse_str () und http_build_query () können wir URL -Abfrageparameter flexibel hinzufügen, ändern und löschen. Diese Methode ist nicht nur klar, sondern auch für verschiedene praktische Szenarien geeignet, wie z. B. Umleitungsverbindungen, Paging -Logik, dynamische Filterbedingungen usw. Die Beherrschung dieser Techniken verbessert Ihre Effizienz und Wartbarkeit Ihres Codes bei der Verarbeitung von URLs erheblich.