如何使用preg_replace_callback

时间:2014-06-12 07:36:14

标签: preg-replace-callback

我正在尝试替换$ target_str的第二次出现。

如果有人能解释preg_replace_callback如何工作,我将不胜感激。 我不懂功能($ match)部分。如何设置它以匹配第二次出现并仅替换该字符串?

我有代码(但它不能按我的意愿工作)。

$replacement_params['target_str'] = "[\n]"; $replacement_params['replacement_str'] = "\n<ads media=googleAds1 />\n"; $target_str = $this->params['target_str']; $replacement_str = $this->params['replacement_str']; $num_matches;

$i = 0;
$new_text = preg_replace_callback("/".$target_str."/U", 
            function ( $match ) {
                if ( $i === 1 ) {
                    return $replacement_str;
                } else {
                    return $match[0];
                }
                $i++;
            } , $article_text, 1, $num_matches );

1 个答案:

答案 0 :(得分:1)

<强> 更新

使用preg_replace_callback的内置计数器变量:

$new_text = preg_replace_callback("/$target_str/U", 
                function($matches) use (&$count, $replacement_str)
                {
                    $count++;
                    return ($count == 2) ? $replacement_str : $matches[0];
                } , $article_text, -1, $count);