php 如何解析 url 参数?



我有一个网址

www.example.com?para1=&para2=2

我试图判断第1段和第2段;

isset($_GET['para1'] )       // true
isset($_GET['para2'])       //true;
isset($_GET['para3'])       // false

我认为isset($_GET['para1'] )是错误的,但似乎不是。

我的问题 :

为什么isset($_GET['para1'] )是真的。它如何在 php 中解析网址?

这里的很多人都说$_GET['para1']的价值是null但事实并非如此。php.net $_GET 文档上有一条评论,它提供了一个有用的脚本来测试这一点。

给定网址:http://www.example.com?a

您可以使用此脚本测试结果:

<?php
print_r($_GET);
if($_GET["a"] === "") echo "a is an empty stringn";
if($_GET["a"] === false) echo "a is falsen";
if($_GET["a"] === null) echo "a is nulln";
if(isset($_GET["a"])) echo "a is setn";
if(!empty($_GET["a"])) echo "a is not empty";
?>
</pre>

输出将是:

a is an empty string
a is set

之所以如此,是因为没有值的键实际上是一个空字符串,而不是null

所以直接回答你的问题:

即使它看起来没有para1设置了值,它实际上确实如此。该值为空字符串 (""(。即使此值是假的,它仍然是一个值,因此,isset()返回 true。可以使用!empty()在空字符串上返回 false。在此处查看isset()empty()is_null()的比较。

isset($var)如果定义了变量,则返回true,而不考虑值(null除外(。在您的情况下,它已定义但包含一个空字符串。
您需要使用empty($var),如果未定义变量并测试实际内容,则不会引发异常。

文档

确定变量是否被视为空。变量是 如果它不存在或其值等于 FALSE,则视为空。
如果变量不存在,empty(( 不会生成警告。

isset($var)将返回true,因为参数存在于 url 中,如果您检查其值,您将找到一个空字符串""

您还可以使用empty($var)函数来测试空值,只需注意空值将返回 true 对于以下值:

0, "", [], null, false ---> empty() return true

其他明智的它会返回假

我通常会使用这样的函数获取参数并给它们默认值,如果它们不存在:

function get($item, $type = 'string', $default = null, $escape = true)
{
if(!isset($_GET[$item])) {
return $default;
}
$output = $_GET[$item];
settype($output, $type);
return $escape ? htmlspecialchars(trim($output)) : $output;
}
echo get('para1');
echo get('name', 'string', '');
echo get('admin', 'bool', false);

尝试编辑功能,希望这个帮助

以下是一些可以帮助您实现所需目标的提示:

  • 要检查是否设置了 var,

    isset($var)
    
  • 要检查 var 是否设置且不为空,

    !empty($var)
    
  • 要检查 var 是否不为空且不是空格,

    !empty($var) && !trim($var) == false
    

isset()返回 true,因为它在您的请求中设置,但设置为空字符串。

你想使用!empty().

在您的请求中www.example.com?para1=&para2=2

para1=nullpara2=2

所以:

if (!empty($_GET['para1'])) {}

该值存在于$_GET数组中,但他的值为 null,该函数isset仅在值初始化时才计算,而不是值是否为真值。

如果你想知道值是否真实,你可以将数组索引与==运算符进行比较,就像这样var_dump($_GET['para1'] == true)

相关内容

  • 没有找到相关文章

最新更新