Возможный дубликат:
сохранение параметров URL во время разбивки на страницы
Я хочу добавить параметр к текущему url с php, но как узнать, содержит ли URL-адрес уже параметр?
Пример:
foobar.com/foo/bar/index.php => foobar.com/foo/bar/index.php?myparameter=5 foobar.com/index.php?foo=7 => foobar.com/index.php?foo = 7 & myparameter = 5
Основная проблема заключается в том, что я не знаю, нужно ли добавлять «?».
Мой код (нашел его где-то, но он не работает):
<?php if(/?/.test(self.location.href)){ //if url contains ? $url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]&myparameter=5"; } else { $url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]?myparameter=5"; }?>
Параметры URL и полученные от глобальной переменной $_GET
которая на самом деле является массивом. Итак, чтобы узнать, содержит ли URL-адрес параметр, вы можете использовать функцию isset()
.
if (isset($_GET['yourparametername'])) { //The parameter you need is present }
После настроек вы можете создать отдельный массив такого параметра, который необходимо привязать к URL-адресу. Как
if(isset($_GET['param1'])) { \\The parameter you need is present $attachList['param1'] = $_GET['param1']; } if(isset($_GET['param2'])) { $attachList['param2'] = $_GET['param2]; }
Теперь, чтобы узнать, нужно ли вам ?
символ, просто посчитайте этот массив
if(count($attachList)) { $link .= "?"; // and so on }
Обновить:
Чтобы узнать, установлен ли какой-либо параметр, просто $_GET
if(count($_GET)) { //some parameters are set }
Действительно, вы должны использовать функцию parse_url () :
<?php $url = parse_url($_SERVER['REQUEST_URI']); if(isset($url['query'])){ //Has query params }else{ //Has no query params } ?>
Также вы должны заключить свои переменные на основе массива в фигурные скобки или выйти из строки:
$url = "http://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}?myparameter=5";
или
$url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."?myparameter=5";
включить error_reporting(E_ALL);
и вы увидите ошибку. Примечание: использование неопределенной константы REQUEST_URI – предполагаемый «REQUEST_URI» ect
вы можете искать '?' char вот так:
if (strpos($_SERVER[REQUEST_URI], '?')) { // returns false if '?' isn't there $url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]&myparameter=5"; } else { $url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]?myparameter=5"; }