PHP 8.4.22 Released!

La classe RegexIterator

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

Introduction

Cet itérateur sert pour réaliser un filtre basé sur une expression rationnelle.

Synopsis de la classe

class RegexIterator extends FilterIterator {
/* Constantes */
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;
/* Propriétés */
public ?string $replacement = null;
/* Méthodes */
public function __construct(
    Iterator $iterator,
    string $pattern,
    int $mode = RegexIterator::MATCH,
    int $flags = 0,
    int $pregFlags = 0
)
public function accept(): bool
public function getFlags(): int
public function getMode(): int
public function getPregFlags(): int
public function getRegex(): string
public function setFlags(int $flags): void
public function setMode(int $mode): void
public function setPregFlags(int $pregFlags): void
/* Méthodes héritées */
public function FilterIterator::accept(): bool
public function FilterIterator::current(): mixed
public function FilterIterator::key(): mixed
public function FilterIterator::next(): void
public function FilterIterator::rewind(): void
public function FilterIterator::valid(): bool
public function IteratorIterator::current(): mixed
public function IteratorIterator::key(): mixed
public function IteratorIterator::next(): void
public function IteratorIterator::rewind(): void
public function IteratorIterator::valid(): bool
}

Constantes pré-définies

Modes d'opération de RegexIterator

RegexIterator::ALL_MATCHES

Retourne toutes les occurrences de l'élément courant (voir preg_match_all()).

RegexIterator::GET_MATCH

Retourne la première occurrence de l'élément courant (voir preg_match()).

RegexIterator::MATCH

Effectue une recherche simple pour l'élément courant (voir preg_match()).

RegexIterator::REPLACE

Remplace l'élément courant (voir preg_replace() ; pas encore totalement implémenté).

RegexIterator::SPLIT

Retourne les valeurs séparées pour l'élément courant (voir preg_split()).

Drapeaux RegexIterator

RegexIterator::USE_KEY

Option spéciale : travaille sur la clé au lieu de la valeur.

RegexIterator::INVERT_MATCH

Inverse la valeur de retour de RegexIterator::accept().

Propriétés

replacement

Sommaire

add a note

User Contributed Notes 2 notes

up
33
jinmoku at hotmail dot com
15 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
3 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.
To Top