从提交的url中忽略没有任何值的表单元素


Ignore from the submitted url the form elements that do not have any values

我想以domain.com/的形式创建一个url?乘积=值1&product2=值2……

有时文本框中可能没有值。如何编辑下面的代码以忽略那些表单元素?

我的表单

    <form action="customsearch.php">
    <input type="text" class="textfield" value="" id="product" name="product">
    <input type="text" class="textfield" value="" id="product2" name="product2">
.
.
.    
    <input type="submit" value="Send">
    </form>

关于你最新的问题:你可以从服务器端重定向到一个新的、更好的URL,但我不确定这是否有意义。使用JavaScript可能会更好。

您可以使用http_build_query()

$url = http_build_query($_POST);

正如@David Fells所指出的,这不会删除空值。

可以进行

$post_elements = array_filter($_POST, "strlen");
$url = http_build_query($post_elements );

这也不错,但不要使用大量数据。

此外,如果我是你,我会用$_GET而不是$_POST来做这件事。

请注意,如果您计划将其用于GET请求,则由于服务器端和浏览器端对URL最大长度的限制,数据的总大小不应超过2-4 KB。

<?php
foreach ($_POST as $k => $v)
{
  if ('' == $v) {
    $url .= "&".urlencode($k).'='.urlencode($v);
  }
} 
?>

不要使用"if($v(",因为如果有人在字段中输入0,它不会添加它。你只想测试",空字符串。

由于问题已完全更改,正在添加新答案。。。

这是没有理由的。浏览器根据标准构造查询字符串。如果你想忽略后台的空字段,那就这样做。如果出于某种风格的原因,你无法忍受它们,那么使用jQuery手动构建URL,并在点击时重定向到它-但这不是提交表单的预期或正常方式。