preg_replace_callback

  • 具体用法参考php手册
示例一
    // $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);

你可能感兴趣的:(preg_replace_callback)