我想以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,并在点击时重定向到它-但这不是提交表单的预期或正常方式。