假设我有一个基本的字符串:
$string = "abcdeffedcbaabcdef";
我想要做的是搜索a,c和f,然后用这些字符中的任何一个替换它们:
$replaceChars = array("1", "2", "3");
因此,当我搜索字符串时,每次我点击其中一个要替换的字符时,我想从替换字符池中随机选择,然后移动到下一个字符进行替换并再次随机选择,等......
我最终会得到类似的东西:
$string = "2b1de32ed1b21b2de3";
但是,我不能让它走到一起。我想我可能会使用array_rand()
使用某种foreach循环,使用strpos()
来查找要替换的每个字符实例。
什么让我失望的是,似乎有很多方法可以逐步执行数组,以便可以应用for
或while
循环,我看不出如何步通过字符串一次一个字符。
我该怎么做?
答案 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使用更传统的方法 - 。