欢迎访问宙启技术站
智能推送

PHPpreg_match_all函数使用方法详解

发布时间:2023-11-03 12:31:20

preg_match_all 是 PHP 中 PCRE 函数库提供的一个函数,用于执行全局正则表达式匹配。它的语法是:

int preg_match_all ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )

其中,参数说明如下:

- pattern:正则表达式模式,用于进行匹配。

- subject:要进行匹配的字符串。

- matches:如果提供了 matches 参数,将把匹配结果存储在其中,作为输出参数。如果未提供此参数,将返回匹配到的次数。

- flags:可选参数,用于控制匹配的方式。具体取值如下:

- PREG_PATTERN_ORDER:默认值,返回一个二维数组,匹配结果按照模式出现的顺序排列。

- PREG_SET_ORDER:返回一个二维数组,每个子数组包含一个完整的匹配结果。

- PREG_OFFSET_CAPTURE:返回一个二维数组,每个子数组包含匹配到的字符串及其在原字符串中的偏移量。

preg_match_all 函数的使用方法如下:

1. 基本使用方法:

$pattern = '/\d+/'; // 匹配数字
$subject = 'abc123def456ghi';
preg_match_all($pattern, $subject, $matches);
print_r($matches);

运行结果为:

Array
(
    [0] => Array
        (
            [0] => 123
            [1] => 456
        )
)

2. 使用 PREG_PATTERN_ORDER 标志返回匹配结果:

$pattern = '/\d+/';
$subject = 'abc123def456ghi';
preg_match_all($pattern, $subject, $matches, PREG_PATTERN_ORDER);
print_r($matches);

运行结果为:

Array
(
    [0] => Array
        (
            [0] => 123
            [1] => 456
        )
)

3. 使用 PREG_SET_ORDER 标志返回匹配结果:

$pattern = '/(\w+)(\d+)/';
$subject = 'abc123def456ghi';
preg_match_all($pattern, $subject, $matches, PREG_SET_ORDER);
print_r($matches);

运行结果为:

Array
(
    [0] => Array
        (
            [0] => abc123
            [1] => abc
            [2] => 123
        )

    [1] => Array
        (
            [0] => def456
            [1] => def
            [2] => 456
        )
)

4. 使用 PREG_OFFSET_CAPTURE 标志返回匹配结果及偏移量:

$pattern = '/\d+/';
$subject = 'abc123def456ghi';
preg_match_all($pattern, $subject, $matches, PREG_OFFSET_CAPTURE);
print_r($matches);

运行结果为:

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => 123
                    [1] => 3
                )

            [1] => Array
                (
                    [0] => 456
                    [1] => 9
                )

        )

)

根据上述示例,我们可以使用 preg_match_all 函数进行全局正则表达式匹配,并根据需要选择不同的标志参数。