preg_replace_callback — 执行一个正则表达式搜索并且使用一个回调进行替换
示例
:
<?php
preg_replace_callback('/([a-z]{3,})/', function ($match) {
echo "<pre>";
var_dump($match);
echo "</pre>";
}, '344aaaaa88rrr00aaa');
结果:
array(2) {
[0]=>
string(5) "aaaaa"
[1]=>
string(5) "aaaaa"
}
array(2) {
[0]=>
string(3) "rrr"
[1]=>
string(3) "rrr"
}
array(2) {
[0]=>
string(3) "aaa"
[1]=>
string(3) "aaa"
}
再看一个示例
:
preg_replace_callback('/([a-z]{3,})(\d{1})/', function ($match) {
echo "<pre>";
var_dump($match);
echo "</pre>";
}, '344aaaaa88rrr00aaa');
结果:
array(3) {
[0]=>
string(6) "aaaaa8"
[1]=>
string(5) "aaaaa"
[2]=>
string(1) "8"
}
array(3) {
[0]=>
string(4) "rrr0"
[1]=>
string(3) "rrr"
[2]=>
string(1) "0"
}
从两个示例比较来看:
$match数组表达的含义:
$match[0]表示的是完成的匹配,即匹配到字符串
$match[1] 表示的是第一个子表达式捕获的匹配
$match[2]表示的是第二个子表达式捕获的匹配
那么$match[3]呢??自然是第三个子表达式捕获的匹配
后面的,以此类推