当我提交一个包含多个同名复选框的表单时,我得到一个如下所示的 URL: www.mysite.com/search.php?myvalue%5B%5D=value1&myvalue%5B%5D=value2
有什么方法可以删除 %5B%5D 以使 URL 变得“漂亮”,比如 htaccess?
代码:
<form>
<input type="checkbox" name="myvalue[]" value="value1">
<input type="checkbox" name="myvalue[]" value="value2">
</form>
最佳答案
Is there someway that I can remove the %5B%5D to make the URL "pretty", with something like htaccess?
没有。 []
是 reserved characters在 URL 中,所以它们肯定需要是 URL-encoded .
如果使用 POST 不是一个选项,考虑到它是一种搜索表单,这是有道理的,那么最好的办法是为它们分别指定一个不同的名称,并将其值设置为 1 左右。
<form>
<input type="checkbox" name="option1" value="1" />
<input type="checkbox" name="option2" value="1" />
</form>
或者,如果您真的坚持让它们具有相同的名称,那么您应该自己提取查询字符串,而不是依赖于在使用 []获取参数时返回数组的 PHP 特定功能名称中的
后缀。
$params = explode('&', $_SERVER['QUERY_STRING']);
foreach ($params as $param) {
$name_value = explode('=', $param);
$name = $name_value[0];
$value = $name_value[1];
// ... Collect them yourself.
}
这样你就可以继续使用无括号名称。
<form>
<input type="checkbox" name="option" value="option1" />
<input type="checkbox" name="option" value="option2" />
</form>
关于php - 提交表单时从 URL 中删除 %5B%5D,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14160843/