Codeigniter POST数据名称

时间:2016-08-03 13:57:22

标签: php arrays codeigniter post

我对发布数据变量名称有疑问,例如我可能会得到这种类型的输入:

<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;此致

1 个答案:

答案 0 :(得分:2)

似乎@Goose指出的问题来自于codeigniter的核心,当我重新访问核心输入类时,我找到了一个函数_clean_input_keys,它包含:

preg_match('/^[a-z0-9:_\/|-]+$/i', $str);

你可以看到+和。是不允许的,所以我改为:

preg_match('/^[a-z0-9\+\.:_\/|-]+$/i', $str);

希望这对任何人都有帮助!