我正在寻找一个函数或类来替换给定的字符串并返回所有可能替换的数组。 换句话说,我正在寻找magic_function:
function magic_function( $str, $find, $replace )
{
$arr = array();
// some magic stuff
return $arr;
}
var_dump( magic_function( 'aaa', 'a', 'b' ) );
/*
should return:
Array(
'aab',
'aba',
'baa',
'bba',
'bab',
'abb',
'bbb'
);
*/
我正在考虑使用explode,然后以某种方式循环遍历该数组,但是也许有更简单的方法吗?也许用正则表达式?有任何想法吗? :)
提前谢谢!
答案 0 :(得分:2)
爆炸和循环似乎很简单。
<?php
function magic_function ($str, $find, $replace) {
$parts = explode($find, $str);
$n = count($parts)-1;
$p = 1<<$n;
for ($i=1; $i<$p; $i++) {
for ($perm="", $seps=$i, $j=0; $j<$n; $seps>>=1, $j++) {
$perm .= $parts[$j] . ($seps&1 ? $replace : $find);
}
$res[] = $perm . $parts[$n];
}
return $res;
}
从$i=0
开始,包括不可替换的情况。