Wie wird weniger Code benötigt, um Parameter aus einer URL-Abfragezeichenfolge abzurufen, die wie folgt formatiert ist?
www.mysite.com/category/subcategory?myqueryhash
Die Ausgabe sollte sein: myqueryhash
Mir ist dieser Ansatz bekannt:
www.mysite.com/category/subcategory?q=myquery
<?php
echo $_GET['q']; //Output: myquery
?>
php
url
query-string
enloz
quelle
quelle
$_SERVER['QUERY_STRING']
wirdfoo=bar2
für Abfragezeichenfolge wiefoo=bar1&foo=bar2
print_r()
Anweisung in<pre>
Tags einschließen :echo '<pre>'.print_r($_SERVER, TRUE).'</pre>';
.$_SERVER['REQUEST_URI']
, obwohl Sie möglicherweise mod_rewrite verwenden möchten, um diesen Teil der URL als Variable zu übergeben. Siehe stackoverflow.com/questions/16388959/url-rewriting-with-phpDie PHP-Methode besteht darin, die Funktion parse_url zu verwenden , die eine URL analysiert und ihre Komponenten zurückgibt . Einschließlich der Abfragezeichenfolge.
Beispiel:
Vollständige Dokumentation hier
quelle
Die Funktion
parse_str()
liest automatisch alle Abfrageparameter in ein Array.Wenn die URL beispielsweise
http://www.example.com/page.php?x=100&y=200
der Code istspeichert Parameter im
$queries
Array ($queries['x']=100
,$queries['y']=200
).Schauen Sie sich die Dokumentation von parse_str an
BEARBEITEN
Laut PHP-Dokumentation
parse_str()
sollte nur mit einem zweiten Parameter verwendet werden. Wenn Sieparse_str($_SERVER['QUERY_STRING'])
diese URL verwenden, werden Variablen$x
und erstellt$y
, wodurch der Code für Angriffe wie zhttp://www.example.com/page.php?authenticated=1
.quelle
parse_str
, aber natürlich wird es als Nein-Nein betrachtet.parse_str($_SERVER['QUERY_STRING'], $params);
- Jetzt$params
enthält das Array alle Werte für Abfragezeichenfolgen.Wenn Sie die gesamte Abfragezeichenfolge möchten:
quelle
Ich werde die beste Antwort als empfehlen
<?php echo 'Hello ' . htmlspecialchars($_GET["name"]) . '!'; ?>
Angenommen, der Benutzer hat http://example.com/?name=Hannes eingegeben
Das obige Beispiel gibt Folgendes aus:
Hallo Hannes!
quelle
example.com/?Hannes
...Auch wenn Sie nach dem aktuellen Dateinamen zusammen mit der Abfragezeichenfolge suchen, müssen Sie nur Folgendes tun
Es würde Ihnen Informationen wie das folgende Beispiel liefern
Und wenn Sie auch den vollständigen Pfad der Datei ab root haben möchten, z. B. /folder/folder2/file.php?arg1=val&arg2=val, entfernen Sie einfach die Funktion basename () und verwenden Sie einfach das Ausfüllen
quelle
/
ist ein gültiges Zeichen in Abfragezeichenfolgen (siehe RFC 3986 ), daher können Sie sich nicht darauf verlassenbasename
.Hier ist meine Funktion, um Teile der Abfragezeichenfolge des REFERRER neu zu erstellen .
Wenn die aufrufende Seite bereits eine Abfragezeichenfolge in ihrer eigenen URL hatte und Sie zu dieser Seite zurückkehren müssen und einige, nicht alle dieser
$_GET
Variablen (z. B. eine Seitenzahl) zurücksenden möchten .Beispiel: Referrer - Abfrage - String wurde
?foo=1&bar=2&baz=3
AufrufrefererQueryString( 'foo' , 'baz' )
zurückkehrtfoo=1&baz=3"
:quelle
Dieser Code und diese Notation gehören nicht mir. Evan K löst eine mehrwertige gleichnamige Abfrage mit einer benutzerdefinierten Funktion;) wird entnommen aus:
http://php.net/manual/en/function.parse-str.php#76792 Credits gehen an Evan K.
Es ist zu erwähnen, dass das eingebaute parse_str eine Abfragezeichenfolge NICHT auf die CGI-Standardmethode verarbeitet, wenn es um doppelte Felder geht. Wenn mehrere Felder mit demselben Namen in einer Abfragezeichenfolge vorhanden sind, werden sie von jeder anderen Webverarbeitungssprache in ein Array eingelesen, aber PHP überschreibt sie stillschweigend:
quelle
Danke an @K. Shahzad Dies ist hilfreich, wenn Sie die neu geschriebene Abfragezeichenfolge ohne zusätzliche Ergänzungen wünschen. Angenommen, Sie schreiben / test /? X = y in index.php? Q = test & x = y um und möchten nur die Abfragezeichenfolge.
quelle
Programmiersprache: PHP
Das hat bei mir funktioniert. Ich hoffe es wird dir auch helfen :)
quelle
Um jeden Knoten in der URI
explode()
abzurufen , können Sie die Funktion $ _SERVER ['REQUEST_URI'] verwenden. Wenn Sie Zeichenfolgen erhalten möchten, ohne zu wissen, ob diese übergeben wurden oder nicht. Sie können die von mir selbst definierte Funktion verwenden, um Abfrageparameter von $ _REQUEST abzurufen (da dies sowohl für POST- als auch für GET-Parameter funktioniert).Es kann einige Fälle geben, in denen Abfrageparameter in den Integer-Typ konvertiert werden sollen. Daher habe ich dieser Funktion den dritten Parameter hinzugefügt.
quelle