检查URL中是否存在参数

lau*_*kok 4 php parameters url

如何检查URL中是否包含参数?

例如,如果字符串是这样的,

form_page_add.php?parent_id=1

return true
Run Code Online (Sandbox Code Playgroud)

但如果是这样,

form_page_add.php?

return nothing
Run Code Online (Sandbox Code Playgroud)

谢谢.

编辑:

很抱歉不清楚,URL是作为字符串从from提交的.我会将该字符串存储在变量中,

if(isset($_POST['cfg_path'])) $cfg_path = trim($_POST['cfg_path']);
Run Code Online (Sandbox Code Playgroud)

所以我需要检查这个变量$cfg_path whether是否有参数.

bar*_*oon 25

也可以使用array_key_exists()查找特定的键,例如

if(array_key_exists('some-key', $_GET))
Run Code Online (Sandbox Code Playgroud)

http://php.net/manual/en/function.array-key-exists.php


Jon*_*Jon 18

你可以使用这个简单的功能:

function url_get_param($url, $name) {
    parse_str(parse_url($url, PHP_URL_QUERY), $vars);
    return isset($vars[$name]) ? $vars[$name] : null;
}
Run Code Online (Sandbox Code Playgroud)

在这里看到它.

如果参数的值存在于url中,或者null根本不显示,它将返回参数的值.您可以区分没有值的参数和完全不由相同运算符出现的参数(三等于===).

这将适用于您传递的任何URL,而不仅仅是$_SERVER['REQUEST_URI'].

更新:

如果你只想知道URL中是否有任何参数,那么你可以使用上面的一些变体(参见评论中的Phil的建议).

或者,您可以使用令人惊讶的简单测试

if (strpos($url, '=')) {
    // has at least one param
}
Run Code Online (Sandbox Code Playgroud)

我们甚至不需要费心去检查false这里,好像存在等号,它不会是第一个字符.

更新#2:虽然使用方法strpos适用于大多数 URL,但它不是防弹的,因此如果您不知道您正在处理哪种URL,则不应使用它.正如Steve Onzra在评论中正确指出的那样,URL就像

http://example.com/2012/11/report/cGFyYW1fd2l0aF9lcXVhbA==
Run Code Online (Sandbox Code Playgroud)

是有效的,但不包含任何参数.

  • @Phil:好吧,如果你只是想知道url中是否有*any*param,你也可以使用`strpos($ url,'=')` - 技术低但效率高:) (3认同)