Php 检查url是否包含参数

Php 检查url是否包含参数,php,url,Php,Url,可能重复: 我想用php向当前url添加一个参数,但如何知道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 主要问题是我不知道是否需要添加一个“?” 我的代码(在某处找到,但不起作用): URL参数从名为$\u GET的全局变

可能重复:

我想用php向当前url添加一个参数,但如何知道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

主要问题是我不知道是否需要添加一个“?”

我的代码(在某处找到,但不起作用):


URL参数从名为
$\u GET
的全局变量接收,该变量实际上是一个数组。因此,要知道URL是否包含参数,可以使用
isset()
函数

if(isset($\u GET['yourparametername'])){
//您需要的参数已存在
}
之后,您可以创建需要附加到URL的此类参数的单独数组。比如:

if(isset($\u GET['param1'])){
\\您需要的参数已存在
$attachList['param1']=$\u GET['param1'];
}
if(isset($\u GET['param2'])){
$attachList['param2']=$\u GET['param2];
}
现在,要知道是否需要一个
符号,只需计算这个数组

if(计数($attachList)){
$link.=“?”;
//等等
}
更新:

要知道是否设置了任何参数,只需计算
$\u GET

if(计数($\u GET)){
//设置了一些参数
}

您可以像这样搜索“?”字符:

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"; 
}

实际上,您应该使用以下功能:

<?php
$url = parse_url($_SERVER['REQUEST_URI']);

if(isset($url['query'])){
    //Has query params
}else{
    //Has no query params
}
?> 

此外,还应将基于数组的变量括在花括号中或从字符串中拆分出来:

$url=“http://{$\u服务器['http\u主机]]}{$\u服务器['REQUEST\u URI']}?myparameter=5”

$url=“http://”$\u服务器['http\u主机].$\u服务器['REQUEST\u URI']。“?myparameter=5”


启用
错误报告(E\u ALL),您将看到错误。注意:使用未定义的常量REQUEST_URI-假定'REQUEST_URI'ect

我不想知道是否设置了我的参数,我想知道是否设置了任何参数实际上,仍然可能有这样的url:?这样就没有参数了,但他还是不应该添加?字符
计数($\u GET)'&':'?'我在更新中添加
,如中所示
if(empty(count($\u-GET)){
when没有参数:p:)那么mod-rewrited URL呢?count($\u-GET)将始终为它们设置?@Puyol,您不应该使用常量作为数组键,而应该用花括号括起来,或者断开字符串并连接起来。
“http://{$\u-SERVER['http\u-HOST']}”
使用PHP\u URL\u PATH作为parse\u URL的第二个参数,它不会传递$URL['query'],因此您的isset($URL['query'])将始终为false。只需删除PHP\u URL\u PATH作为第二个参数即可正常工作。感谢您的回答,因为当$\u GET不可用时,它对我更有意义。@Chris yes your right,thanksOr简言之,

<?php
$url = parse_url($_SERVER['REQUEST_URI']);

if(isset($url['query'])){
    //Has query params
}else{
    //Has no query params
}
?>