我对发布数据变量名称有疑问,例如我可能会得到这种类型的输入:
<input type="number" name="amount[BKP1P+NC10A]" />
理论上,数组元素名称没有任何问题,当我不在codeigniter时,我会收到数组名称并像往常一样访问它,但奇怪的是当我使用$this->input->post()
时甚至当我访问时直接从$_POST
数据元素名称的数据被删除,而我得到一个枚举数组。
例如在普通帖子中(没有codeigniter)我得到:
array(1) {
["amount"]=>
array(1) {
["BKP1P+NC10A"]=>
string(2) "12"
}
}
在codeigniter中,我得到了这个:
array(1) {
["amount"]=>
array(1) {
[0]=>
string(2) "12"
}
}
有谁能告诉我发生了什么以及如何获得实际名称而不是枚举数组?
谢谢&amp;此致
答案 0 :(得分:2)
似乎@Goose指出的问题来自于codeigniter的核心,当我重新访问核心输入类时,我找到了一个函数_clean_input_keys,它包含:
preg_match('/^[a-z0-9:_\/|-]+$/i', $str);
你可以看到+和。是不允许的,所以我改为:
preg_match('/^[a-z0-9\+\.:_\/|-]+$/i', $str);
希望这对任何人都有帮助!