SPL-StandardPHPLibrary
Public Member Functions | Public Attributes | Protected Member Functions | Private Attributes
RegexIterator Class Reference
Inheritance diagram for RegexIterator:
Inheritance graph
[legend]
Collaboration diagram for RegexIterator:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 __call ($func, $params)
 __construct (Iterator $it, $regex, $mode=0, $flags=0, $preg_flags=0)
 accept ()
 current ()
 getFlags ()
 getInnerIterator ()
 getMode ()
 getPregFlags ()
 getRegex ()
 key ()
 next ()
 rewind ()
 setFlags ($flags)
 setMode ($mode)
 setPregFlags ($preg_flags)
 valid ()

Public Attributes

const ALL_MATCHES = 2
const GET_MATCH = 1
const MATCH = 0
const REPLACE = 4
const SPLIT = 3
const USE_KEY = 0x00000001

Protected Member Functions

 __clone ()
 fetch ()

Private Attributes

 $current
 $flags
 $key
 $mode
 $preg_flags
 $regex

Detailed Description

Regular expression filter for iterators.

Author:
Marcus Boerger
Version:
1.0
Since:
PHP 5.1

This filter iterator assumes that the inner iterator

Definition at line 20 of file regexiterator.inc.


Constructor & Destructor Documentation

RegexIterator::__construct ( Iterator it,
regex,
mode = 0,
flags = 0,
preg_flags = 0 
)

Constructs a regular expression filter around an iterator whose elemnts or keys are strings.

Parameters:
itinner iterator
regexthe regular expression to match
modeoperation mode (one of self::MATCH, self::GET_MATCH, self::ALL_MATCHES, self::SPLIT)
flagsspecial flags (self::USE_KEY)
preg_flagsglobal PREG_* flags, see preg_match(), preg_match_all(), preg_split()

Definition at line 52 of file regexiterator.inc.

References $flags, $mode, $preg_flags, and $regex.

                                                                                       {
        parent::__construct($it);
        $this->regex = $regex;
        $this->flags = $flags;
        $this->mode = $mode;
        $this->preg_flags = $preg_flags;
    }

Member Function Documentation

FilterIterator::__call ( func,
params 
) [inherited]

Aggregate the inner iterator.

Parameters:
funcName of method to invoke
paramsArray of parameters to pass to method

Reimplemented in SearchIterator.

Definition at line 121 of file filteriterator.inc.

    {
        return call_user_func_array(array($this->it, $func), $params);
    }
FilterIterator::__clone ( ) [protected, inherited]

hidden __clone

Reimplemented in KeyFilter.

Definition at line 104 of file filteriterator.inc.

                                 {
        // disallow clone 
    }
RegexIterator::accept ( )

Match current or key against regular expression using mode, flags and preg_flags.

Returns:
whether this is a match
Warning:
never call this twice for the same state

Reimplemented from FilterIterator.

Definition at line 68 of file regexiterator.inc.

References current(), key(), and USE_KEY.

    {
        $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;
                }
        }
    }

Here is the call graph for this function:

RegexIterator::current ( )
Returns:
the current value after accept has been called

Reimplemented from FilterIterator.

Definition at line 115 of file regexiterator.inc.

Referenced by accept().

    {
        return $this->current;
    }
FilterIterator::fetch ( ) [protected, inherited]

Fetch next element and store it.

Returns:
void

Definition at line 61 of file filteriterator.inc.

References FilterIterator\accept().

Referenced by FilterIterator\next(), and FilterIterator\rewind().

                               {
        while ($this->it->valid()) {
            if ($this->accept()) {
                return;
            }
            $this->it->next();
        };
    }

Here is the call graph for this function:

RegexIterator::getFlags ( )
Returns:
current operation flags

Definition at line 136 of file regexiterator.inc.

    {
        return $this->flags;
    }
FilterIterator::getInnerIterator ( ) [inherited]
RegexIterator::getMode ( )
Returns:
current operation mode

Definition at line 122 of file regexiterator.inc.

    {
        return $this->mode;
    }
RegexIterator::getPregFlags ( )
Returns:
current PREG flags

Definition at line 150 of file regexiterator.inc.

    {
        return $this->preg_flags;
    }
RegexIterator::getRegex ( )
Returns:
current regular expression

Definition at line 164 of file regexiterator.inc.

    {
        return $this->regex;
    }
RegexIterator::key ( )
Returns:
the key after accept has been called

Reimplemented from FilterIterator.

Definition at line 108 of file regexiterator.inc.

Referenced by accept().

    {
        return $this->key;
    }
FilterIterator::next ( ) [inherited]

Move to next element.

Returns:
void

Implements Iterator.

Reimplemented in SearchIterator.

Definition at line 75 of file filteriterator.inc.

References FilterIterator\fetch().

                    {
        $this->it->next();
        $this->fetch();
    }

Here is the call graph for this function:

FilterIterator::rewind ( ) [inherited]

Rewind the inner iterator.

Implements Iterator.

Reimplemented in SearchIterator.

Definition at line 42 of file filteriterator.inc.

References FilterIterator\fetch().

                      { 
        $this->it->rewind();
        $this->fetch();
    }

Here is the call graph for this function:

RegexIterator::setFlags ( flags)
Parameters:
flagsnew operaion flags

Definition at line 143 of file regexiterator.inc.

References $flags.

    {
        $this->flags = $flags;
    }
RegexIterator::setMode ( mode)
Parameters:
modenew operaion mode

Definition at line 129 of file regexiterator.inc.

References $mode.

    {
        $this->mode = $mode;
    }
RegexIterator::setPregFlags ( preg_flags)
Parameters:
preg_flagsnew PREG flags

Definition at line 157 of file regexiterator.inc.

References $preg_flags.

    {
        $this->preg_flags = $preg_flags;
    }
FilterIterator::valid ( ) [inherited]
Returns:
Whether more elements are available

Implements Iterator.

Reimplemented in SearchIterator.

Definition at line 83 of file filteriterator.inc.

                     {
        return $this->it->valid();
    }

Member Data Documentation

RegexIterator::$current [private]

the value used for current()

Definition at line 38 of file regexiterator.inc.

RegexIterator::$flags [private]

special flags (self::USE_KEY)

Definition at line 34 of file regexiterator.inc.

Referenced by RecursiveRegexIterator\__construct(), __construct(), and setFlags().

RegexIterator::$key [private]

the value used for key()

Definition at line 37 of file regexiterator.inc.

RegexIterator::$mode [private]

operation mode (one of self::MATCH, self::GET_MATCH, self::ALL_MATCHES, self::SPLIT)

Definition at line 32 of file regexiterator.inc.

Referenced by RecursiveRegexIterator\__construct(), __construct(), and setMode().

RegexIterator::$preg_flags [private]

PREG_* flags, see preg_match(), preg_match_all(), preg_split()

Definition at line 35 of file regexiterator.inc.

Referenced by RecursiveRegexIterator\__construct(), __construct(), and setPregFlags().

RegexIterator::$regex [private]

the regular expression to match against

Definition at line 31 of file regexiterator.inc.

Referenced by RecursiveRegexIterator\__construct(), and __construct().

Mode: Return all matches (if any)

Definition at line 27 of file regexiterator.inc.

Mode: Return the first matche (if any)

Definition at line 26 of file regexiterator.inc.

Mode: Executed a plain match only.

Definition at line 25 of file regexiterator.inc.

Mode: Replace the input key or current.

Definition at line 29 of file regexiterator.inc.

Mode: Return the split values (if any)

Definition at line 28 of file regexiterator.inc.

const RegexIterator::USE_KEY = 0x00000001

If present in $flags the key is used rather then the current value.

Definition at line 22 of file regexiterator.inc.

Referenced by accept().


The documentation for this class was generated from the following file: