diff options
author | Andrey Andreev <narf@bofh.bg> | 2012-11-12 16:21:01 +0100 |
---|---|---|
committer | Andrey Andreev <narf@bofh.bg> | 2012-11-12 16:21:01 +0100 |
commit | 7a7ad782b2f125622509a77c5a6f94ad4ae0f93c (patch) | |
tree | 8b849b80e51492877c60a7b976d33a0ddba68d46 /system/libraries/Form_validation.php | |
parent | a9ab46d7a031bda304eb9b6658ffaf693b8d9bcb (diff) |
Some micro-optimizations
Diffstat (limited to 'system/libraries/Form_validation.php')
-rw-r--r-- | system/libraries/Form_validation.php | 20 |
1 files changed, 5 insertions, 15 deletions
diff --git a/system/libraries/Form_validation.php b/system/libraries/Form_validation.php index e50eee4f2..b0ba8bbcb 100644 --- a/system/libraries/Form_validation.php +++ b/system/libraries/Form_validation.php @@ -199,12 +199,10 @@ class CI_Form_validation { // Is the field name an array? If it is an array, we break it apart // into its components so that we can fetch the corresponding POST data later + $indexes = array(); if (preg_match_all('/\[(.*?)\]/', $field, $matches)) { - // Note: Due to a bug in current() that affects some versions - // of PHP we can not pass function call directly into it - $x = explode('[', $field); - $indexes[] = current($x); + sscanf($field, '%[^[][', $indexes[0]); for ($i = 0, $c = count($matches[0]); $i < $c; $i++) { @@ -218,7 +216,6 @@ class CI_Form_validation { } else { - $indexes = array(); $is_array = FALSE; } @@ -673,11 +670,7 @@ class CI_Form_validation { // Strip the parameter (if exists) from the rule // Rules can contain a parameter: max_length[5] $param = FALSE; - if (preg_match('/(.*?)\[(.*)\]/', $rule, $match)) - { - $rule = $match[1]; - $param = $match[2]; - } + sscanf($rule, '%[^[][%[^]]', $rule, $param); // Call the function that corresponds to the rule if ($callback === TRUE) @@ -796,11 +789,8 @@ class CI_Form_validation { { // Do we need to translate the field name? // We look for the prefix lang: to determine this - if (strpos($fieldname, 'lang:') === 0) + if (sscanf($fieldname, 'lang:%s', $line) === 1) { - // Grab the variable - $line = substr($fieldname, 5); - // Were we able to translate the field name? If not we use $line if (FALSE === ($fieldname = $this->CI->lang->line($line))) { @@ -1002,7 +992,7 @@ class CI_Form_validation { */ public function is_unique($str, $field) { - list($table, $field) = explode('.', $field); + sscanf($field, '%[^.].%[^.]', $table, $field); if (isset($this->CI->db)) { $query = $this->CI->db->limit(1)->get_where($table, array($field => $str)); |