【问题标题】:PHP: How to get keyless URL parametersPHP:如何获取无密钥 URL 参数
【发布时间】:2014-08-16 21:47:20
【问题描述】:

我想获取http://link.com/?parameter等键中的参数

我在某处读到键是NULL,值是parameter

我尝试了$_GET[NULL],但似乎没有用。

这是我的代码:

if ($_GET[NULL] == "parameter") {
    echo 'Invoked parameter.';
} else {
    echo '..';
}

它只是打印出..,所以这意味着我做得不对。谁能告诉我正确的方法。

【问题讨论】:

  • 试试if ($_GET['parameter'] == NULL)
  • $_GET 超全局是一个数组。当您执行 mypage.php?parameter 之类的操作时,您正在为其添加一个键而不分配一个值。你将有 $_GET = array("parameter" => "").那是 PHP 101
  • 在讨论之前回答我,你能用空键创建一个数组吗...???

标签: php url-parameters


【解决方案1】:

PHP 中没有无密钥 URL 参数之类的东西。 ?parameter 相当于将$_GET['parameter'] 设置为空字符串。

尝试使用http://link.com/?parameter 之类的网址进行var_dump($_GET),看看你会得到什么。

它应该看起来像这样:

array (size=1) 'parameter' => string '' (length=0)

因此,您可以根据您的应用需求通过多种方式对其进行测试:

if (isset($_GET['parameter'])) {
   // do something
} else {
   // do something else
}

// Only recommended if you're 100% sure that 'parameter' will always be in the URL.
// Otherwise this will throw an undefined index error. isset() is a more reliable test.

if ($_GET['parameter'] === '') {
   // do something
} else {
   // do something else
}

【讨论】:

    【解决方案2】:

    $_GET 是一个超级全局 assoc 数组,其中包含 parameter=>it's value 对。所以,parameter 是数组的一个键。

    例如,如果您的网址是这样的:myweb.com/?page=load&do=magic,那么您的$_GET 是:

    $_GET(
      [page] => load
      [do] => magic
    )
    

    如果您只想测试,如果parameter 在您的 URL 中作为参数,您应该执行以下操作:

    if (isset($_GET['parameter'])
      echo "Here I am!";
    

    【讨论】:

      【解决方案3】:

      你也可以这样获取整个request_url

      echo $_SERVER['REQUEST_URI'];
      

      获取?之后的部分:

      echo explode('?', $_SERVER['REQUEST_URI'])[1];
      

      【讨论】:

      • 非常糟糕的解决方案。如果他想添加另一个参数来请求怎么办?
      • @wingsofovnia,只是提供了一种不同的方式。在某些情况下可能会派上用场:)
      【解决方案4】:

      你可以得到以?开头的部分网址

      $_SERVER['QUERY_STRING']
      

      【讨论】:

        【解决方案5】:

        你可以通过array_keys():

        $param = array_keys($_GET)[0];
        

        这将为您提供第一个查询字符串参数的名称,无论它是否有值。

        你也可以得到所有没有值的参数,像这样:

        $empty = [];
        foreach($_GET as $key => $value)
            if(strlen($value) === 0) $empty[] = $key;
        
        print_r($empty);
        

        【讨论】:

          猜你喜欢
          • 2021-12-10
          • 2017-05-23
          • 2012-08-03
          • 2013-07-03
          • 2013-06-20
          • 2014-06-13
          • 1970-01-01
          • 2018-11-29
          • 2011-03-20
          相关资源
          最近更新 更多