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; }
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']; } }