Каким способом «меньше кода требуется» получить параметры из строки запроса URL, которая отформатирована следующим образом?
www.mysite.com/category/subcategory?myqueryhash
Вывод должен быть: myqueryhash
Я знаю об этом подходе:
www.mysite.com/category/subcategory?q=myquery
<?php
echo $_GET['q']; //Output: myquery
?>
php
url
query-string
enloz
источник
источник
$_SERVER['QUERY_STRING']
покажетfoo=bar2
для строки запроса, какfoo=bar1&foo=bar2
print_r()
заявление в<pre>
тегах:echo '<pre>'.print_r($_SERVER, TRUE).'</pre>';
.$_SERVER['REQUEST_URI']
, хотя вы можете рассмотреть возможность использования mod_rewrite для передачи этой части URL в качестве переменной. См stackoverflow.com/questions/16388959/url-rewriting-with-phpВ PHP это можно сделать с помощью функции parse_url , которая анализирует URL и возвращает его компоненты. Включая строку запроса.
Пример:
Полная документация здесь
источник
Функция
parse_str()
автоматически считывает все параметры запроса в массив.Например, если URL есть
http://www.example.com/page.php?x=100&y=200
, кодсохранит параметры в
$queries
массив ($queries['x']=100
,$queries['y']=200
).Посмотри документацию parse_str
РЕДАКТИРОВАТЬ
Согласно документации PHP,
parse_str()
должен использоваться только со вторым параметром. Использованиеparse_str($_SERVER['QUERY_STRING'])
по этому URL создаст переменные$x
и$y
, что делает код уязвимым для таких атак, какhttp://www.example.com/page.php?authenticated=1
.источник
parse_str
, но, естественно, это считается нет-нет.parse_str($_SERVER['QUERY_STRING'], $params);
- теперь$params
массив будет содержать все значения строки запроса.Если вы хотите всю строку запроса:
источник
Я рекомендую лучший ответ как
<?php echo 'Hello ' . htmlspecialchars($_GET["name"]) . '!'; ?>
Предполагая, что пользователь ввел http://example.com/?name=Hannes
Приведенный выше пример выведет:
Привет Ханнес!
источник
example.com/?Hannes
...Также, если вы ищете текущее имя файла вместе со строкой запроса, вам просто нужно следующее
Это даст вам информацию, как в следующем примере
И если вам также нужен полный путь к файлу, начиная с root, например /folder/folder2/file.php?arg1=val&arg2=val, просто удалите функцию basename () и просто используйте поиск
источник
/
является допустимым символом в строках запроса (см. RFC 3986 ), поэтому на него нельзя положитьсяbasename
.Вот моя функция для перестройки частей строки запроса REFERRER .
Если у вызывающей страницы уже была строка запроса в ее собственном URL , и вы должны вернуться на эту страницу и хотите отослать часть, а не все из этих
$_GET
переменных (например, номер страницы).Пример: Строка запроса реферрера была
?foo=1&bar=2&baz=3
вызоваrefererQueryString( 'foo' , 'baz' )
возвращаетсяfoo=1&baz=3"
:источник
Этот код и обозначение не мое. Эван К решает многозначный запрос имени с пользовательской функцией;) взят из:
http://php.net/manual/en/function.parse-str.php#76792 Кредиты предоставляются Эван К.
Следует отметить, что встроенная функция parse_str НЕ обрабатывает строку запроса стандартным способом CGI, когда речь идет о дублирующих полях. Если в строке запроса существует несколько полей с одним и тем же именем, любой другой язык веб-обработки считывает их в массив, но PHP молча перезаписывает их:
источник
Благодаря @K. Shahzad Это помогает, когда вы хотите переписать строку запроса без каких-либо дополнений перезаписи. Допустим, вы переписали / test /? X = y в index.php? Q = test & x = y, и вам нужна только строка запроса.
источник
Язык программирования: PHP
Это сработало для меня. Я надеюсь, это также поможет вам :)
источник
Для получения каждого узла в URI вы можете использовать функцию
explode()
для $ _SERVER ['REQUEST_URI']. Если вы хотите получить строки, не зная, переданы они или нет. Вы можете использовать функцию, которую я сам определил, чтобы получить параметры запроса из $ _REQUEST (так как она работает как для параметров POST, так и для GET).В некоторых случаях мы можем преобразовать параметры запроса в тип Integer, поэтому я добавил третий параметр в эту функцию.
источник