你好堆栈溢出社区,我需要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();
}
});
});