PHP Velho Oeste 2024

The RegexIterator class

(PHP 5 >= 5.2.0, PHP 7)

Introducere

This iterator can be used to filter another iterator based on a regular expression.

Sinopsisul clasei

RegexIterator extends FilterIterator {
/* Constante */
const int MATCH = 0 ;
const int GET_MATCH = 1 ;
const int ALL_MATCHES = 2 ;
const int SPLIT = 3 ;
const int REPLACE = 4 ;
const int USE_KEY = 1 ;
/* Metode */
public __construct ( Iterator $iterator , string $regex , int $mode = self::MATCH , int $flags = 0 , int $preg_flags = 0 )
public accept ( ) : bool
public getFlags ( ) : int
public getMode ( ) : int
public getPregFlags ( ) : int
public getRegex ( ) : string
public setFlags ( int $flags ) : void
public setMode ( int $mode ) : void
public setPregFlags ( int $preg_flags ) : void
/* Metode moștenite */
public abstract FilterIterator::accept ( ) : bool
public FilterIterator::next ( ) : void
public FilterIterator::rewind ( ) : void
public FilterIterator::valid ( ) : bool
}

Constante predefinite

RegexIterator operation modes

RegexIterator::ALL_MATCHES

Return all matches for the current entry (see preg_match_all()).

RegexIterator::GET_MATCH

Return the first match for the current entry (see preg_match()).

RegexIterator::MATCH

Only execute match (filter) for the current entry (see preg_match()).

RegexIterator::REPLACE

Replace the current entry (see preg_replace(); Not fully implemented yet)

RegexIterator::SPLIT

Returns the split values for the current entry (see preg_split()).

RegexIterator Flags

RegexIterator::USE_KEY

Special flag: Match the entry key instead of the entry value.

Cuprins

add a note add a note

User Contributed Notes 2 notes

up
33
jinmoku at hotmail dot com
13 years ago
An exemple :

<?php
$a
= new ArrayIterator(array('test1', 'test2', 'test3'));
$i = new RegexIterator($a, '/^(test)(\d+)/', RegexIterator::REPLACE);
$i->replacement = '$2:$1';
      
print_r(iterator_to_array($i));
/*
Array
(
    [0] => 1:test
    [1] => 2:test
    [2] => 3:test
)
*/
?>
up
1
chris dot snyder at totara dot com
1 year ago
In case the difference between modes RegexIterator::MATCH and RegexIterator::GET_MATCH is not immediately clear:

MATCH will only return one value per matched element, as a string.

GET_MATCH will return as many values, per matched element, as there are sub-patterns. If there are sub-patterns, each iteration returns an indexed array with the full pattern match at 0 and each of the sub-pattern matches as another element.

If there are no sub-patterns, the behaviour of GET_MATCH is the same as MATCH.
To Top