function adPattern($word, $rec, $list, $index) { // create a list of regex matching $word with $rec number of extra character if ($rec == 0) { return array($word); } $output = array(); for ($i = $index + 1; $i < strlen($word); $i++) { $mot2 = substr($word, 0, $i) . '.?' . substr($word, $i, strlen($word) - 1); if ($rec > 1) { //echo($mot2); $output[$i] = adPattern($mot2, $rec - 1, $list, $i + 1); } else { $list[] = $mot2; } } if ($rec > 1) { return flat($output); } return $list; }
<?php function flat(&$ary) { // argument must be by reference or array will just be copied for ($i = 0; $i < count($ary); $i++) { while (is_array($ary[$i])) { array_splice($ary, $i, 1, $ary[$i]); } } } $lst = array(array(1), 2, array(array(3, 4), 5), array(array(array())), array(array(array(6))), 7, 8, array()); flat($lst); var_dump($lst);