Wie kombinieren Sie query-strings in PHP
Gegeben, eine url und einen query-string, wie kann ich die url, die sich aus der Kombination der query-string mit der url?
Ich bin auf der Suche nach eine ähnliche Funktionalität wie .htaccess ist qsa
. Ich weiß, das wäre ziemlich trivial zu implementieren, vollständig von hand, jedoch gibt es eingebaute Funktionen, die sich mit query-strings, die entweder vereinfachen oder vollständig lösen?
Beispiel Eingabe/Ergebnis-sets:
Url="http://www.example.com/index.php/page?a=1"
QS ="?b=2"
Result="http://www.example.com/index.php/page?a=1&b=2"
-
Url="page.php"
QS ="?b=2"
Result="page.php?b=2"
- sind Sie nach sth aus der example.com site-admin-Perspektive oder von einem Benutzer ("hacker") Perspektive ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie wäre es mit etwas verwendet keine PECL-Erweiterungen und ist nicht eine riesige Menge von kopieren-und-einfügen Funktionen? Es ist noch ein bisschen komplexer, weil Sie Spleißen zusammen zwei-query-strings und wollen, es zu tun in einer Weise, die nicht nur
$old .= $new;
Verwenden wir parse_url zum extrahieren der query-string aus den gewünschten url, parse_str zum Parsen der query-strings, dem Sie beitreten möchten, array_merge um Sie miteinander zu verbinden, und http_build_query zu erstellen, die neue, kombinierte Zeichenfolge für uns.
http_build_query
- und query-string Parsen im Allgemeinen. Die Möglichkeit mehrere Werte für die gleiche query-parameter behandelt werden, ist nicht kompatibel mit allem anderen, aber PHP (z.B. Java ServletRequest.getParameterValues).Können Sie die query-string-Teil der url verwenden:
und dann hängen Sie an die url in der Regel.
Wenn Sie möchten, können Sie Ihre eigenen benutzerdefinierten Variablen im Abfrage-string, schauen Sie auf:
http_build_query
Dies ist eine Reihe von Funktionen aus der WordPress - "framework", das wird es tun, aber das könnte durchaus gut sein, zu viel:
add_query_arg()
stripslashes_deep()
urlencode_deep()
Es gibt keine eingebaute Funktion, um dies zu tun. Allerdings können Sie diese Funktion verwenden, die aus http-PECL-Erweiterung,
http://usphp.com/manual/en/function.http-build-url.php
Beispielsweise
Also, was passiert, wenn die urls Konflikt? Wenn beide urls enthalten eine
b=
Komponente im querystring? Müssten Sie beschlossen, die vorherrscht.Hier ist ein Stück code das tut, was Sie wollen, analysieren Sie jede Zeichenfolge als url, dann das extrahieren der
query
url-Teil undimplode()
ing Sie wieder zusammen.