- substr: documentation ( source)
- mt_rand: documentation ( source)
<?php
$format = 'AAA-###000';
$voucherCode = '';
$charSet = 'ABCDEFGHJKLMNPQRSTUVWXYZ'; //removed O and I, they can easily be mistaken for numbers
$numberSet = '0123456789';
$length = strlen($format);
$charCount = strlen($charSet);
$numberCount = strlen($numberSet);
for ($i=0; $i < $length; $i++) {
if ($format[$i] == '#') //alpha
$voucherCode .= substr($charSet, mt_rand(0, $charCount-1), 1);
elseif($format[$i] == '0') //numerical
$voucherCode .= substr($numberSet, mt_rand(0, $numberCount-1), 1);
else //specific alpha character
$voucherCode .= $format[$i];
}
echo $voucherCode;