Я хочу заменить регулярное выражение, но я не хочу делать это каждый раз, когда он найден. Я думаю, что preg_replace_callback - это то, что мне нужно использовать, и просто делаю там произвольную проверку, но я не могу понять, как передать функции обратного вызова несколько параметров. В конечном итоге мне понадобится больше двух, но если я смогу получить две работы, я, вероятно, смогу получить больше работы.
Например, я хочу сделать замену 50% времени, а в остальное время я просто верну то, что было найдено. Вот пара функций, с которыми я работал, но просто не могу их исправить.
function pick_one($matches, $random) {
$choices = explode('|', $matches[1]);
return $random . $choices[array_rand($choices)];
}
function doSpin($content) {
$call = array_map("pick_one", 50);
return preg_replace_callback('!\[%(.*?)%\]!', $call, $content);
/* return preg_replace_callback('!\[%(.*?)%\]!', 'pick_one($1, 50)', $content); */
}
$content = 'This [%should|ought|would|could%] make it much [%more convenient|faster|easier%] and help reduce duplicate content.';
echo doSpin($content).'<br/>';
Спасибо
Аллен