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

Osk*_*son 8 html php 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>
Run Code Online (Sandbox Code Playgroud)

Bal*_*usC 15

有没有我可以删除%5B%5D使URL"漂亮",像htaccess?

不.这[]是URL 中的保留字符,因此它们肯定需要进行URL编码.

如果使用POST不是一个选项,这是一个有意义的,因为它是一个搜索表单,你最好的选择是给每个人一个不同的名字,值为1左右.

<form>
    <input type="checkbox" name="option1" value="1" />
    <input type="checkbox" name="option2" value="1" />
</form>
Run Code Online (Sandbox Code Playgroud)

或者,如果您确实坚持使用相同的名称,那么您应该自己提取查询字符串,而不是依赖于在获取[]名称中带有后缀的参数时返回数组的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.
}
Run Code Online (Sandbox Code Playgroud)

这样你就可以继续使用无支撑名称.

<form>
    <input type="checkbox" name="option" value="option1" />
    <input type="checkbox" name="option" value="option2" />
</form>
Run Code Online (Sandbox Code Playgroud)