php - 提交表单时从 URL 中删除 %5B%5D

标签 php html forms rewrite

当我提交一个包含多个同名复选框的表单时,我得到一个如下所示的 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>

或者,如果您真的坚持让它们具有相同的名称,那么您应该自己提取查询字符串,而不是依赖于在使用 [] 后缀。

$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/

相关文章:

jquery - 查找Jquery表中最接近的div

php - 从 jsFiddle 粘贴后,代码中出现字符

php - 如何将 XML 文件从服务器动态保存到本地计算机?

php - 从数据库中检索数据

php - MYSQL 错误 - 由于目标机器拒绝而无法建立连接

php - 检查用户是否在过去一小时内注册

javascript - 将文本区域限制为 "fits"的文本

javascript - Extjs 自定义 vtype

php - 注册表未在数据库表中发布详细信息

javascript - 如何使用 post 方法将基于条件的数组变量传递给 PHP