Во-первых, вы не должны отклонять $digits
, превышающее количество символов на выбор.Вы можете легко получить GeneratePassword(10,'A')
, и в этом случае вам нужно будет вернуть AAAAAAAAAA
.
Во-вторых, вы не должны удалять выбранные символы из строки.Примеры даже включают повторяющиеся символы (например, 2c00acb
).
Кроме того, ваш код, кажется, работает.Однако я бы посоветовал вам заранее вычислить strlen($passwordString)
и сохранить его в переменной, а не вычислять один раз для каждой итерации цикла.