Генерация всех комбинаций из набора символов

Генерация всех комбинаций из набора символов

Небольшая 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;
}
PHP

Использование

Например, в результате нужен массив строк длиной четыре символа из всех цифр.

generator_words('0123456789', 4, $words);
var_dump($words);
PHP

Результат:

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"
}

Или строки длиной в три символа из всех букв английского алфавита.

generator_words('abcdefghijklmnopqrstuvwxyz', 3, $words);
var_dump($words);
PHP

Результат:

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"
}
20.05.2020, обновлено 22.05.2020
9792
Предыдущая запись SVG спрайты
Следующая запись Вывод PHP-массива колонками

Комментарии 1

webnatrix webnatrix
11 ноября 2021 в 08:49
Хорошая функция, но не подскажите как сделать лимиты по данной функции?
К примеру есть строка:
Начало: aaaaaaaaaaaaaaa
Конец: bbbbbbbbbbbbbbb

, чтобы добавить комментарий.

Другие публикации

Генерация случайных буквенно-цифровых кодов в PHP
Несколько примеров, как сгенерировать случайные последовательности численных и буквенных строк заданной длины и...
12620
+4
Поиск похожих текстов в базе данных MySQL + PHP
Один из вариантов поиска похожих статей в базе данных основан на схождении слов в двух текстах.
8083
+6
Преобразование цветов в PHP
Несколько примеров как перевести цвета из HEX в RGB и обратно с помощью PHP.
16857
-1
Как вывести PHP массив
Примеры использования PHP функций и циклов для вывода всех элементов массива в окно браузера.
98059
+6
Работа с массивами PHP – создание, наполнение, удаление
Основные примеры работы с массивами PHP. Создание, наполнение, извлечение удаление значений.
106676
+14
Поиск файлов в PHP
Для поиска файлов на сервере хорошо подходит функция glob(), которая возвращает список файлов по заданной маске, например...
26340
+1