summaryrefslogtreecommitdiffstats
path: root/system/libraries/Form_validation.php
diff options
context:
space:
mode:
authorAndrey Andreev <narf@bofh.bg>2012-11-12 16:21:01 +0100
committerAndrey Andreev <narf@bofh.bg>2012-11-12 16:21:01 +0100
commit7a7ad782b2f125622509a77c5a6f94ad4ae0f93c (patch)
tree8b849b80e51492877c60a7b976d33a0ddba68d46 /system/libraries/Form_validation.php
parenta9ab46d7a031bda304eb9b6658ffaf693b8d9bcb (diff)
Some micro-optimizations
Diffstat (limited to 'system/libraries/Form_validation.php')
-rw-r--r--system/libraries/Form_validation.php20
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));