如何用随机集替换字符串中的一组字符?

时间:2012-03-06 04:45:23

标签: php

假设我有一个基本的字符串:

$string = "abcdeffedcbaabcdef";

我想要做的是搜索a,c和f,然后用这些字符中的任何一个替换它们:

$replaceChars = array("1", "2", "3");

因此,当我搜索字符串时,每次我点击其中一个要替换的字符时,我想从替换字符池中随机选择,然后移动到下一个字符进行替换并再次随机选择,等......

我最终会得到类似的东西:

$string = "2b1de32ed1b21b2de3";
但是,我不能让它走到一起。我想我可能会使用array_rand()使用某种foreach循环,使用strpos()来查找要替换的每个字符实例。

什么让我失望的是,似乎有很多方法可以逐步执行数组,以便可以应用forwhile循环,我看不出如何步通过字符串一次一个字符。

我该怎么做?

1 个答案:

答案 0 :(得分:4)

$newStr = preg_replace_callback('/[acf]/', function () {
    static $replacements = array('1', '2', '3');
    return $replacements[array_rand($replacements)];
}, $str);

http://www.php.net/preg_replace_callback

这使用PHP 5.3+匿名函数进行回调,对PHP 5.2使用更传统的方法 - 。