我想以domain.com/?product=value1&product2=value2 .....的形式创建一个网址。
有时文本框中可能没有值。如何编辑下面的代码以忽略这些表单元素?
我的表单
<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>
答案 0 :(得分:2)
更新您的更新问题:您可以从服务器端重定向到新的更好的网址,但我不确定这是否有意义。在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千字节。
答案 1 :(得分:1)
<?php
foreach ($_POST as $k => $v)
{
if ('' == $v) {
$url .= "&".urlencode($k).'='.urlencode($v);
}
}
?>
不要使用“if($ v)”,因为如果有人在字段中输入0,则不会添加它。你只想测试'',空字符串。
答案 2 :(得分:0)
自问题完全改变后添加新答案......
没有理由这样做。浏览器根据标准构造查询字符串。如果您想要忽略后端的空字段,请执行此操作。如果由于某些风格原因你无法忍受它们,那么使用jQuery并手动构建URL并在点击时重定向到它 - 但这不是提交表单的预期或正常方式。