Проверьте, содержит ли url параметры

Возможный дубликат:
сохранение параметров 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"; }?> 

Solutions Collecting From Web of "Проверьте, содержит ли url параметры"

Параметры 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"; }