我需要搜索某些内容并用HTML包含某些单词。要搜索的单词在数组中,我只想替换每组匹配中的第二个到最后一个匹配项。因此,举个例子,如果有5场比赛,我想替换第4场比赛。如果有3场比赛,请更换第2场。如果有2个匹配,则替换第二个/最后一个匹配,如果只有一个匹配,则使用该匹配。需要计数匹配并使用preg_replace_callback替换“第n个”匹配
回调函数在使用回调函数的外部。
我想我需要一个数组 - 减一 - 然后将该数字传递给回调函数并在那里使用它,但也许有更简单的方法来做到这一点?
简化的功能是:
function repWords($content) {
foreach ($words_array as $w) {
$content = preg_replace_callback('/\b('.$w.'[s]?)\b/S', array(&$this,'addHtml'), $content);
}
return $content;
}
function addHtml($format){
return '<span>' . $format[1] . '</span>'
}
根据需要更换它找到的话,我可以将它设置为随机替换一些这样的作品,但我想要么更换第n个发生和/或仅替换一个发生(并不总是第一次出现)。
最后一段引发我的兴趣,似乎没有与你以前的陈述jive。你可以给一个实际的“之前”和“之后”的例子? –
所以你不希望这个方法是正确的:在数组中找到所有匹配的单词,将'count-1'传递给回调函数? – mesutozer
也,你使用什么版本的PHP –