函数名称:preg_replace_callback()
适用版本:PHP 4.0.5及以上版本
函数说明:preg_replace_callback()函数是用于执行正则表达式的搜索和替换操作,但不同于preg_replace()函数,它允许使用一个回调函数来替换匹配到的结果。
语法:string preg_replace_callback ( mixed $pattern , callable $callback , mixed $subject [, int $limit = -1 [, int &$count ]] )
参数说明:
- $pattern:要匹配的正则表达式模式。
- $callback:一个回调函数,用于替换匹配到的结果。该回调函数的参数是一个包含匹配到的结果的数组,返回替换后的字符串。
- $subject:要进行搜索和替换的字符串。
- $limit(可选):指定最大替换次数,默认为-1,表示替换所有匹配到的结果。
- $count(可选):如果提供了该参数,它将接收替换的次数。
返回值:返回替换后的字符串,如果发生错误则返回NULL。
示例代码:
$text = "Hello, my name is John. I love PHP!";
$pattern = '/\b[A-Z]\w+\b/';
// 使用匿名函数作为回调函数
$result = preg_replace_callback($pattern, function($matches) {
return strtoupper($matches[0]);
}, $text);
echo $result;
// 输出:HELLO, MY NAME IS JOHN. I LOVE PHP!
在上述示例中,我们首先定义了一个字符串$text,然后使用正则表达式模式$pattern来匹配所有以大写字母开头的单词。我们使用preg_replace_callback()函数来执行替换操作,其中回调函数使用了匿名函数的形式,将匹配到的结果转换为大写字母。最后,我们输出替换后的结果,即所有以大写字母开头的单词都被替换为大写形式。