/************** This code is public domain. This function increments a case-sensitive alphanumeric number. It will use as many digits as you give it. If it tries to increment a number that is at it's maximum (eg "ZZ"), it returns boolean false. **************/ define('NUMBER_START', ord('0')); define('NUMBER_END', ord('9')); define('LOWER_START', ord('a')); define('LOWER_END', ord('z')); define('UPPER_START', ord('A')); define('UPPER_END', ord('Z')); function incrementNumber($number) { if (strlen($number) == 0) return false; $number = str_split($number); $last = ord(array_pop($number)); switch ($last) { case NUMBER_END: $last = LOWER_START; break; case LOWER_END: $last = UPPER_START; break; case UPPER_END: $last = NUMBER_START; $inc = incrementNumber(implode($number)); if ($inc === false) return false; $number = str_split($inc); break; default: $last++; } $last = chr($last); $number[] = $last; return implode($number); } // Usage echo incrementNumber('0000'); // outputs "0001" echo incrementNumber('0aB4'); // outputs "0aB5" echo incrementNumber('0aB9'); // outputs "0aBa" echo incrementNumber('0aBz'); // outputs "0aBA" echo incrementNumber('0aBZ'); // outputs "0aC0"