Небольшая PHP функция, которая сгенерирует массив всех возможных строк заданной длины из набора символов.
function generator_words($chars, $length, &$words, $prefix = '') {
if (strlen($prefix) == $length) {
$words[] = $prefix;
return;
}
for ($i = 0; $i < strlen($chars); $i++) {
generator_words($chars, $length, $words, $prefix . $chars{$i});
}
return;
}
Использование
Например, в результате нужен массив строк длиной четыре символа из всех цифр.
Результат:
array(10000) {
[0]=> string(4) "0000"
[1]=> string(4) "0001"
[2]=> string(4) "0002"
[3]=> string(4) "0003"
...
[9996]=> string(4) "9996"
[9997]=> string(4) "9997"
[9998]=> string(4) "9998"
[9999]=> string(4) "9999"
}
Или строки длиной в три символа из всех букв английского алфавита.
Результат:
array(17576) {
[0]=> string(3) "aaa"
[1]=> string(3) "aab"
[2]=> string(3) "aac"
[3]=> string(3) "aad"
...
[17572]=> string(3) "zzw"
[17573]=> string(3) "zzx"
[17574]=> string(3) "zzy"
[17575]=> string(3) "zzz"
}
К примеру есть строка:
Начало: aaaaaaaaaaaaaaa
Конец: bbbbbbbbbbbbbbb