regex = $regex; $this->flags = $flags; $this->mode = $mode; $this->preg_flags = $preg_flags; } /** * Match current or key against regular expression using mode, flags and * preg_flags. * * @return whether this is a match * * @warning never call this twice for the same state */ function accept() { $matches = array(); $this->key = parent::key(); $this->current = parent::current(); /* note that we use $this->current, rather than calling parent::current() */ $subject = ($this->flags & self::USE_KEY) ? $this->key : $this->current; switch($this->mode) { case self::MATCH: return preg_match($this->regex, $subject, $matches, $this->preg_flags); case self::GET_MATCH: $this->current = array(); return preg_match($this->regex, $subject, $this->current, $this->preg_flags) > 0; case self::ALL_MATCHES: $this->current = array(); return preg_match_all($this->regex, $subject, $this->current, $this->preg_flags) > 0; case self::SPLIT: $this->current = array(); preg_split($this->regex, $subject, $this->current, $this->preg_flags) > 1; case self::REPLACE: $this->current = array(); $result = preg_replace($this->regex, $this->replacement, $subject); if ($this->flags & self::USE_KEY) { $this->key = $result; } else { $this->current = $result; } } } /** @return the key after accept has been called */ function key() { return $this->key; } /** @return the current value after accept has been called */ function current() { return $this->current; } /** @return current operation mode */ function getMode() { return $this->mode; } /** @param mode new operaion mode */ function setMode($mode) { $this->mode = $mode; } /** @return current operation flags */ function getFlags() { return $this->flags; } /** @param flags new operaion flags */ function setFlags($flags) { $this->flags = $flags; } /** @return current PREG flags */ function getPregFlags() { return $this->preg_flags; } /** @param preg_flags new PREG flags */ function setPregFlags($preg_flags) { $this->preg_flags = $preg_flags; } /** @return current regular expression */ function getRegex() { return $this->regex; } } ?>