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

List of all members.

Public Member Functions

 __call ($func, $params)
 __construct (RecursiveIterator $it, $regex, $mode=0, $flags=0, $preg_flags=0)
 accept ()
 current ()
 getChildren ()
 getFlags ()
 getInnerIterator ()
 getMode ()
 getPregFlags ()
 getRegex ()
 hasChildren ()
 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

 $ref

Detailed Description

Recursive 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 recursiveregexiterator.inc.


Constructor & Destructor Documentation

RecursiveRegexIterator::__construct ( RecursiveIterator 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 34 of file recursiveregexiterator.inc.

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


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 ( ) [inherited]

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 RegexIterator\current(), RegexIterator\key(), and RegexIterator\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 ( ) [inherited]
Returns:
the current value after accept has been called

Reimplemented from FilterIterator.

Definition at line 115 of file regexiterator.inc.

Referenced by RegexIterator\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:

RecursiveRegexIterator::getChildren ( )
Returns:
an iterator for the current elements children
Note:
the returned iterator will be of the same class as $this

Implements RecursiveIterator.

Definition at line 49 of file recursiveregexiterator.inc.

References FilterIterator\getInnerIterator().

    {
        if (empty($this->ref))
        {
            $this->ref = new ReflectionClass($this);
        }
        return $this->ref->newInstance($this->getInnerIterator()->getChildren());
    }

Here is the call graph for this function:

RegexIterator::getFlags ( ) [inherited]
Returns:
current operation flags

Definition at line 136 of file regexiterator.inc.

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

Definition at line 122 of file regexiterator.inc.

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

Definition at line 150 of file regexiterator.inc.

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

Definition at line 164 of file regexiterator.inc.

    {
        return $this->regex;
    }
RecursiveRegexIterator::hasChildren ( )
Returns:
whether the current element has children

Implements RecursiveIterator.

Definition at line 40 of file recursiveregexiterator.inc.

References FilterIterator\getInnerIterator().

    {
        return $this->getInnerIterator()->hasChildren();
    }

Here is the call graph for this function:

RegexIterator::key ( ) [inherited]
Returns:
the key after accept has been called

Reimplemented from FilterIterator.

Definition at line 108 of file regexiterator.inc.

Referenced by RegexIterator\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) [inherited]
Parameters:
flagsnew operaion flags

Definition at line 143 of file regexiterator.inc.

References RegexIterator\$flags.

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

Definition at line 129 of file regexiterator.inc.

References RegexIterator\$mode.

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

Definition at line 157 of file regexiterator.inc.

References RegexIterator\$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

RecursiveRegexIterator::$ref [private]

Definition at line 58 of file recursiveregexiterator.inc.

const RegexIterator::ALL_MATCHES = 2 [inherited]

Mode: Return all matches (if any)

Definition at line 27 of file regexiterator.inc.

const RegexIterator::GET_MATCH = 1 [inherited]

Mode: Return the first matche (if any)

Definition at line 26 of file regexiterator.inc.

const RegexIterator::MATCH = 0 [inherited]

Mode: Executed a plain match only.

Definition at line 25 of file regexiterator.inc.

const RegexIterator::REPLACE = 4 [inherited]

Mode: Replace the input key or current.

Definition at line 29 of file regexiterator.inc.

const RegexIterator::SPLIT = 3 [inherited]

Mode: Return the split values (if any)

Definition at line 28 of file regexiterator.inc.

const RegexIterator::USE_KEY = 0x00000001 [inherited]

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

Definition at line 22 of file regexiterator.inc.

Referenced by RegexIterator\accept().


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