這裏是爲您
function repl($str, $map) {
if(strlen($str) == 0)
return array('');
$out = array();
foreach(repl(substr($str, 1), $map) as $r)
foreach($map[$str[0]] as $sub)
$out[] = $sub . $r;
return $out;
}
使用這樣
$map = array(
'a' => array('1', '2', '3'),
'b' => array('@', '*'),
'c' => array('X', 'Y', 'Z')
);
$result = repl("abc", $map);
一個簡單的遞歸解決方案要爲UTF8字符串(或任意子)工作,該函數應該接受的陣列字符串:
function repl($chars, $map) {
if(count($chars) == 0)
return array('');
$out = array();
foreach(repl(array_slice($chars, 1), $map) as $r)
foreach($map[$chars[0]] as $sub)
$out[] = $sub . $r;
return $out;
}
使用這樣
preg_match_all('~.~u', $str, $m);
$chars = $m[0];
$result = repl($chars, $map);
看看str_replace()函數 – Niklas 2011-06-04 00:47:06
你有什麼這麼遠嗎? – 2011-06-04 00:47:24
@Oli查爾斯沃斯在這一點上沒有什麼,思考。 – DavidW 2011-06-04 00:58:28