Dutch PHP Conference 2026 - Call For Papers

The RegexIterator class

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

Introduction

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

Class synopsis

class RegexIterator extends FilterIterator {
/* Constants */
public const int USE_KEY ;
public const int INVERT_MATCH ;
public const int MATCH ;
public const int GET_MATCH ;
public const int ALL_MATCHES ;
public const int SPLIT ;
public const int REPLACE ;
/* Properties */
public ?string $replacement = null;
/* Methods */
public __construct (
Iterator $iterator,
string $pattern,
int $mode = RegexIterator::MATCH,
int $flags = 0,
int $pregFlags = 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 $pregFlags): void
/* Inherited methods */
}

Predefined Constants

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.

RegexIterator::INVERT_MATCH

Inverts the return value of RegexIterator::accept() .

Properties

replacement

Table of Contents

Found A Problem?

Learn How To Improve This PageSubmit a Pull RequestReport a Bug
+add a note

User Contributed Notes 2 notes

up
33
jinmoku at hotmail dot com
14 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
4
chris dot snyder at totara dot com
2 years 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.
+add a note

AltStyle によって変換されたページ (->オリジナル) /