Esempio n. 1
0
 function parseStringOperation($val)
 {
     $_this =& Operations::getInstance();
     foreach ($_this->operators as $op) {
         $op = Set::merge($_this->opDefOpt, $op);
         if (!empty($op['pattern'])) {
             if (preg_match($op['pattern'], (string) $val, $res)) {
                 $oper = array('operator' => $op['name']);
                 array_shift($res);
                 foreach ($res as $k => $r) {
                     if (!empty($op['named'][$k])) {
                         $name = (array) $op['named'][$k];
                         $oper[$name[0]] = $r;
                     } else {
                         $oper[$k] = $r;
                     }
                 }
                 return $oper;
             }
         }
     }
     return $val;
 }
Esempio n. 2
0
 function parseStringOperation($val, $options = array())
 {
     if (is_numeric($val)) {
         return $val;
     }
     $_this =& Operations::getInstance();
     $localOpt = array('type', 'error');
     $defOpt = array('mode' => 'full', 'error' => false);
     $opt = array_merge($defOpt, $options);
     App::import('Lib', 'SetMulti');
     foreach ($_this->operators as $op) {
         $op = Set::merge($_this->opDefOpt, $op, SetMulti::excludeKeys($opt, $localOpt));
         if (empty($opt['type']) || in_array($op['type'], (array) $opt['type'])) {
             $pattern = $_this->getPattern($op);
             //debug($pattern);
             if (!empty($pattern)) {
                 if (preg_match($pattern, (string) $val, $res)) {
                     //debug($res);
                     $oper = array('operator' => $op['name']);
                     array_shift($res);
                     foreach ($res as $k => $r) {
                         if (!is_numeric($k)) {
                             $oper[$k] = $r;
                         }
                     }
                     return $oper;
                 }
             }
         }
     }
     if ($opt['error'] == '(val)') {
         return $val;
     } else {
         return $opt['error'];
     }
 }