diff options
author | Andrey Andreev <narf@bofh.bg> | 2013-03-26 14:44:12 +0100 |
---|---|---|
committer | Andrey Andreev <narf@bofh.bg> | 2013-03-26 14:44:12 +0100 |
commit | 5269c1cf2d5ae749309b06194f0a2a737a9ff114 (patch) | |
tree | f4155535f7293524b4cdc2c03e4f10369b9263e7 /system/core | |
parent | ee34b84be6697bd4da411edaf625ed97a9480def (diff) | |
parent | 408cbb4f3582ac64bb534a6539370992071d5950 (diff) |
Merge pull request #2348 from nisheeth-barthwal/feature/nested_keys
Added Parsing Capabilities to Input class for nested array keys
Diffstat (limited to 'system/core')
-rw-r--r-- | system/core/Input.php | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/system/core/Input.php b/system/core/Input.php index 8d491e055..6690b7f2e 100644 --- a/system/core/Input.php +++ b/system/core/Input.php @@ -153,17 +153,39 @@ class CI_Input { */ protected function _fetch_from_array(&$array, $index = '', $xss_clean = FALSE) { - if ( ! isset($array[$index])) + if (isset($array[$index])) { - return NULL; + $value = $array[$index]; } + elseif (($count = preg_match_all('/(?:^[^\[]+)|\[[^]]*\]/', $index, $matches)) > 1) // Does the index contain array notation + { + $value = $array; + for ($i = 0; $i < $count; $i++) + { + $key = trim($matches[0][$i], '[]'); + if ($key === '') // Empty notation will return the value as array + { + break; + } - if ($xss_clean === TRUE) + if (isset($value[$key])) + { + $value = $value[$key]; + } + else + { + return NULL; + } + } + } + else { - return $this->security->xss_clean($array[$index]); + return NULL; } - return $array[$index]; + return ($xss_clean === TRUE) + ? $this->security->xss_clean($value) + : $value; } // -------------------------------------------------------------------- |