清除空 url 参数


Clear empty url params

你好堆栈溢出社区,我需要GET东西的帮助。所以我有高级搜索,当我提交表单时,浏览器显示以下链接:

/page_korteles.php?kriterijus-susirgo-nuo=&kriterijus-susirgo-iki=&kriterijus-gimimo-nuo=&kriterijus-gimimo-iki=&kriterijus-isdavimo-nuo=&kriterijus-isdavimo-iki=&kriterijus-ivedimo-nuo=&kriterijus-ivedimo-iki=&kriterijus-isplestinis=ne

是否可以清除空参数?或者也许有不同的方法来解决这个问题?真的需要一些想法。

你可以

简单地使用array_filter():-

print_r(array_filter($_GET));

更多知识:- https://secure.php.net/manual/en/function.array-filter.php

注意:- 上述函数不会从您的 url 中删除任何内容,只需从数组变量 $_GET 中删除空值元素即可。

也许你想要下面这样的东西(这个建议是由另一个人给出的,我只是添加它,因为它可能对你有帮助):-

if(array_filter($_GET) == $_GET) { //stays on page and do other stuff (already removed empty) }else{ // remove empty keys and redirect to url without them; }

如果您实际上希望 URL 看起来不包含空参数,则可以在从查询字符串中筛选出它们后重定向到同一页面。

// using a callback in array_filter can avoid filtering non-empty falsey values (0, etc.)
$not_blank = array_filter($_GET, function($x) { return $x != ''; });
if ($not_blank != $_GET) {
    $query = http_build_query($not_blank);
    header('Location: ' . $_SERVER['PHP_SELF'] . "?$query") ;
    exit;
}

不过,老实说,我不认为将它们放在那里有什么伤害。它似乎添加了不必要的额外步骤,如果您确实需要向页面发送空参数值,则可能会在将来引起问题。

提交表单时尝试这样的事情

  $("#search-form").submit(function(){
    $("input").each(function(index, input){
        if($(input).val() == "") {
            $(input).remove();
        }
    });
  });