示例一
// $pattern 要搜索的模式,字符串或一个字符串数组
// callback 一个回调函数,在每次需要替换时调用
// $subject 要搜索替换的目标字符串或字符串数组
// $limit 对于每个模式用于每个$subject字符串的最大可替换次数。默认(-1 无限次)
// $count 如果指定,这个变量将被填充为替换执行的次数。
// preg_replace_callback(mixed $pattern, callback $callback, mixed $subject[, int $limit = -1 [, int &$count]])
// 示例:一
$text = "April fools day is 04/01/2002\nLast christmas was 12/24/2001\n";
// 回调函数
function nextYear($matches)
{
// dump($matches);
/*
* array:3 [
* 0 => "04/01/2002"
* 1 => "04/01/"
* 2 => "2002"
* ]
*
* array:3 [
* 0 => "12/24/2001"
* 1 => "12/24/"
* 2 => "2001"
* ]
*
* 该回调函数被匹配了两两次 执行了两次
*/
// 通常:
// $matches[0] 是完成的匹配
// $matches[1] 是第一个捕获子组的匹配
return $matches[1].($matches[2]+1);
}
$count = 0;
// April fools day is 04/01/2003\nLast christmas was 12/24/2002\n
echo preg_replace_callback("|(\d{2}/\d{2}/)(\d{4})|","nextYear",$text, -1, $count);
// 2
var_dump($count);
网友评论