RegexIterator 类

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

介绍

此迭代器可用于根据正则表达式过滤另一个迭代器。

类概要

class RegexIterator extends FilterIterator {
/* 常量 */
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;
/* 属性 */
public ?string $replacement = null;
/* 方法 */
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
/* 继承的方法 */
}

预定义常量

RegexIterator 操作模式

RegexIterator::ALL_MATCHES

返回当前条目的所有匹配项(参见 preg_match_all())。

RegexIterator::GET_MATCH

返回当前条目的第一个匹配项(参见 preg_match())。

RegexIterator::MATCH

仅对当前条目执行匹配(过滤)(参见 preg_match())。

RegexIterator::REPLACE

替换当前条目(参见 preg_replace(); 尚未完全实现)

RegexIterator::SPLIT

返回当前条目的拆分值(参见 preg_split())。

RegexIterator 标志

RegexIterator::USE_KEY

特殊标志:匹配条目键而不是条目值。

RegexIterator::INVERT_MATCH

反转 RegexIterator::accept() 的返回值。

属性

replacement

目录

添加注释

用户贡献的注释 2 条注释

jinmoku at hotmail dot com
13 年前
一个例子

<?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
)
*/
?>
chris dot snyder at totara dot com
1 年前
如果 RegexIterator::MATCH 和 RegexIterator::GET_MATCH 模式之间的区别不清楚

MATCH 每次匹配元素只返回一个值,作为字符串。

GET_MATCH 每次匹配元素会返回与子模式数量一致的值。如果有子模式,每次迭代将返回一个索引数组,其中包含完整的模式匹配结果(索引为 0),以及每个子模式的匹配结果。

如果没有子模式,GET_MATCH 的行为与 MATCH 相同。
To Top