summaryrefslogtreecommitdiffstats
path: root/system/core/Input.php
diff options
context:
space:
mode:
authorAndrey Andreev <narf@bofh.bg>2013-03-26 14:44:12 +0100
committerAndrey Andreev <narf@bofh.bg>2013-03-26 14:44:12 +0100
commit5269c1cf2d5ae749309b06194f0a2a737a9ff114 (patch)
treef4155535f7293524b4cdc2c03e4f10369b9263e7 /system/core/Input.php
parentee34b84be6697bd4da411edaf625ed97a9480def (diff)
parent408cbb4f3582ac64bb534a6539370992071d5950 (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/Input.php')
-rw-r--r--system/core/Input.php32
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;
}
// --------------------------------------------------------------------