PHP preg_replace_callback() 函数
PHP preg_replace_callback() 函数执行一个正则表达式搜索并且使用一个回调进行替换
函数原型
mixed preg_replace_callback ( mixed $pattern , callable $callback , mixed $subject [, int $limit = -1 [, int &$count ]] )
这个函数的行为除了可以指定一个 callback 替代 replacement 进行替换字符串的计算,其他方面等同于 preg_replace()
参数
参数 | 说明 |
---|---|
$pattern | 要搜索的模式,可以使字符串或一个字符串数组 |
$callback | 一个回调函数,在每次需要替换时调用,调用时函数得到的参数是从 subject 中匹配到的结果 |
$subject | 要搜索替换的目标字符串或字符串数组 |
$limit | 可选,对于每个模式用于每个 subject 字符串的最大可替换次数 默认是 -1(无限制) |
返回值
如果 subject 是一个数组, preg_replace_callback() 返回一个数组,其他情况返回字符串
错误发生时返回 NULL
如果查找到了匹配,返回替换后的目标字符串(或字符串数组), 其它情况 subject 将会无变化返回
范例
<?php // 将文本中的年份增加一年 $text = "April fools day is 04/01/2002\n"; $text .= "Last christmas was 12/24/2001\n"; // 回调函数 function next_year($matches) { // 通常: $matches[0]是完成的匹配 // $matches[1]是第一个捕获子组的匹配 // 以此类推 return $matches[1].($matches[2]+1); } echo preg_replace_callback("|(\d{2}/\d{2}/)(\d{4})|","next_year",$text);
运行以上 PHP 范例,输出结果如下
April fools day is 04/01/2003 Last christmas was 12/24/2002