@AndRussia

Почему мой генератор не работает?

Здравствуйте. Сделал генератор случайных букв и цифр по маске.
Имеется переменная $promo_mask = 'XXXX-5555-XXXX-5555';, которая соответственно и является той самой маской.
Сам генератор:
$mask_count = substr_count($promo_mask, 'X');

	$chars = '12345ABCDEFGHIJKLMNOPQRSTUVWXYZ67890';
	$hashpromo = '';
	for($ichars = 1; $ichars <= $mask_count; ++$ichars) {
    	$random = str_shuffle($chars);
    	$promo = str_replace('X', $random[$ichars], $promo_mask);
	}
	echo $promo;

На выходе получаю что-то подобное: DDDD-5555-DDDD-5555, хотя желаемый результат выглядит так: A6JS-5555-0ORP-5555
Одна и та же буква присваивается каждому иксу. Я догадываюсь, что сама конструкция не правильная, но в чем - понять не могу. Заранее спасибо.
  • Вопрос задан
  • 99 просмотров
Решения вопроса 2
@402d
начинал с бейсика на УКНЦ в 1988
str_replace — Заменяет все вхождения строки поиска на строку замены

легче всего переделать так.
по всей длине маски
взять текущий символ.
если он Х то к результату добавить случайный символ иначе текущий
Ответ написан
Fernus
@Fernus
Техник - Механик :)
str_replace на preg_replace с доп. параметром заменить...

$promo_mask = 'XXXX-5555-XXXX-5555';
$mask_count = substr_count($promo_mask, 'X');
$promo = $promo_mask;

  $chars = '12345ABCDEFGHIJKLMNOPQRSTUVWXYZ67890';
  $hashpromo = '';
  for($ichars = 1; $ichars <= $mask_count; ++$ichars) {
    	$random = str_shuffle($chars);
    	$promo = preg_replace('/X/', $random[$ichars], $promo, 1);
  }
  echo $promo;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы