это не лучший способ, но это будет работать
<?php
$capital = range ('A','Z');
$small = range ('a','z');
$number = range ('0','9');
$special = array ("#","$","@");
$password = $capital[array_rand($capital)] .
$small[array_rand($small)] .
$number[array_rand($number)] .
"-" .
$capital[array_rand($capital)] .
$small[array_rand($small)] .
$number[array_rand($number)] .
$special[array_rand($special)];
print $password;
Вы можете прочитать о функциях, которые я использовал здесь
array_rand
диапазон
Будет выдавать результаты вроде:
Tg8-Im1$
Yj3-Xl3@
Cr1-Lv1@
что, я думаю, ваше требование
Пожалуйста, дайте мне знать, если вам нужна дополнительная помощь по этому вопросу.