“PHP 中的 Function() 返回”跳过 filter_var() 中的 syntex 错误

"Return of a Function() in PHP" skip syntex error in filter_var()

提问人:Md Mohidul Haque Khan 提问时间:11/5/2023 更新时间:11/6/2023 访问量:29

问:

private function getURL(){
    $url = isset($_GET['url']) && $_GET['url'] != "" ? $_GET['url'] : "home";
    return explode("/", filter_var(trim($url,"/")),FILTER_SANITIZE_URL);
}

上面的代码在没有任何警告或错误的情况下执行,但 getURL() 函数的第二行应该是这样的: return explode(“/”, filter_var(trim($url,“/”),FILTER_SANITIZE_URL));

为什么我没有收到任何错误或警告?

请让我知道,这里发生了什么?

提前致谢。

php 函数 语法错误 返回值

评论

0赞 Markus Zeller 11/5/2023
括号不正确。

答:

1赞 osakagreg 11/6/2023 #1

Explode 使用三个参数进行调用:

  1. 分隔符:"/"
  2. 要拆分的字符串:filter_var(trim($url,"/"))
  3. 附加参数:FILTER_SANITIZE_URL

在本例中,FILTER_SANITIZE_URL 将作为 limit 参数传递,该参数需要一个整数。由于 FILTER_SANITIZE_URL 是一个常量而不是整数,因此此处未按预期使用。

但是,PHP 很宽松,不会抛出错误。相反,它可能会将常量转换为整数(这可能会导致限制为 0 或其他一些意外值)并继续执行。