Jaki jest „mniej potrzebny kod”, aby uzyskać parametry z ciągu zapytania adresu URL, który jest sformatowany w następujący sposób?
www.mysite.com/category/subcategory?myqueryhash
Dane wyjściowe powinny wynosić: myqueryhash
Mam świadomość tego podejścia:
www.mysite.com/category/subcategory?q=myquery
<?php
echo $_GET['q']; //Output: myquery
?>
php
url
query-string
powiększenie
źródło
źródło
$_SERVER['QUERY_STRING']
pokażefoo=bar2
dla zapytania ciąg taki jakfoo=bar1&foo=bar2
print_r()
oświadczenie w<pre>
tagach:echo '<pre>'.print_r($_SERVER, TRUE).'</pre>';
.$_SERVER['REQUEST_URI']
, chociaż możesz rozważyć użycie mod_rewrite do przekazania tej części adresu URL jako zmiennej. Zobacz stackoverflow.com/questions/16388959/url-rewriting-with-phpAby to zrobić w PHP, należy użyć funkcji parse_url , która analizuje adres URL i zwraca jego składniki. Łącznie z ciągiem zapytania.
Przykład:
Pełna dokumentacja tutaj
źródło
Funkcja
parse_str()
automatycznie odczytuje wszystkie parametry zapytania do tablicy.Na przykład, jeśli adres URL to
http://www.example.com/page.php?x=100&y=200
kodzapisze parametry w
$queries
tablicy ($queries['x']=100
,$queries['y']=200
).Zobacz dokumentację parse_str
EDYTOWAĆ
Zgodnie z dokumentacją PHP
parse_str()
należy używać tylko z drugim parametrem. Użycieparse_str($_SERVER['QUERY_STRING'])
tego adresu URL spowoduje utworzenie zmiennych$x
i$y
, co czyni kod podatnym na ataki takie jakhttp://www.example.com/page.php?authenticated=1
.źródło
parse_str
, ale oczywiście jest to uważane za nie-nie.parse_str($_SERVER['QUERY_STRING'], $params);
- teraz$params
tablica będzie zawierać wszystkie wartości ciągu zapytania.Jeśli chcesz cały ciąg zapytania:
źródło
Polecę najlepszą odpowiedź jako
<?php echo 'Hello ' . htmlspecialchars($_GET["name"]) . '!'; ?>
Zakładając, że użytkownik wprowadził http://example.com/?name=Hannes
Powyższy przykład wyświetli:
Cześć Hannes!
źródło
example.com/?Hannes
...Również, jeśli szukasz bieżącej nazwy pliku wraz z ciągiem zapytania, wystarczy wykonać następujące czynności
Dostarczy ci informacji takich jak następujący przykład
A jeśli chcesz również pełną ścieżkę do pliku, zaczynając od katalogu głównego, np. /Folder/folder2/file.php?arg1=val&arg2=val, po prostu usuń funkcję basename () i użyj wypełniania
źródło
/
jest poprawnym znakiem w ciągach zapytań (patrz RFC 3986 ), więc nie można na nim polegaćbasename
.Oto moja funkcja odbudowywania części ciągu zapytania REFERRERA .
Jeśli strona wywołująca ma już ciąg zapytania we własnym adresie URL i musisz wrócić do tej strony i chcesz odesłać niektóre, nie wszystkie,
$_GET
zmienne (np. Numer strony).Przykład: ciąg zapytania strony odsyłającej
?foo=1&bar=2&baz=3
wywoływałrefererQueryString( 'foo' , 'baz' )
zwrotyfoo=1&baz=3"
:źródło
Ten kod i notacja nie są moje. Evan K rozwiązuje zapytanie o tej samej nazwie o wielu wartościach za pomocą funkcji niestandardowej;) pochodzi z:
http://php.net/manual/en/function.parse-str.php#76792 Kredyty należą do Evana K.
Należy wspomnieć, że wbudowane parse_str NIE przetwarza ciągu zapytania w standardowy sposób CGI, jeśli chodzi o duplikaty pól. Jeśli w ciągu zapytania istnieje wiele pól o tej samej nazwie, każdy inny język przetwarzania w sieci odczyta je do tablicy, ale PHP po cichu je nadpisuje:
źródło
Dzięki @K. Shahzad Pomaga to, gdy chcesz przerobiony ciąg zapytania bez żadnych dodatków przepisywania. Załóżmy, że przepisałeś / test /? X = y do index.php? Q = test & x = y, a chcesz tylko ciąg zapytania.
źródło
Język programowania: PHP
To zadziałało dla mnie. Mam nadzieję, że ci to pomoże :)
źródło
Aby uzyskać każdy węzeł w URI, możesz użyć funkcji
explode()
$ _SERVER ['REQUEST_URI']. Jeśli chcesz uzyskać ciągi, nie wiedząc, czy zostało ono przekazane, czy nie. możesz użyć funkcji, którą sam zdefiniowałem, aby uzyskać parametry zapytania z $ _REQUEST (ponieważ działa zarówno dla parametrów POST, jak i GET).Mogą wystąpić przypadki, w których chcemy przekonwertować parametry zapytania na liczbę całkowitą, więc do tej funkcji dodałem trzeci parametr.
źródło