(PHP 5 >= 5.2.0, PHP 7, PHP 8)
Этот итератор может быть использован для фильтрации другого итератора на основе регулярных выражений.
$iterator,$pattern,$mode = RegexIterator::MATCH ,$flags = 0,$pregFlags = 0RegexIterator::ALL_MATCHES Возвращать все совпадения для текущий записи (смотрите preg_match_all() ).
RegexIterator::GET_MATCH Возвращать первое совпадение для текущей записи (смотрите preg_match() ).
RegexIterator::MATCH Только выполнение сравнения (фильтра) для текущей записи (смотрите preg_match() ).
RegexIterator::REPLACE Заменить текущую запись (смотрите preg_replace() ; Полностью пока не реализовано)
RegexIterator::SPLIT Возвращать разделённые значения для текущей записи (смотрите preg_split() ).
RegexIterator::USE_KEY Специальный флаг: Сравнивать ключ записи вместо значения записи.
RegexIterator::INVERT_MATCH Инвертирует возвращаемое значение RegexIterator::accept() .
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
)
*/
?>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.