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 函数进行全局正则表达式匹配,并根据需要选择不同的标志参数。
