Advertisement
Guest User

Case-Sensitive Alphanumeric Increment Function

a guest
Nov 24th, 2010
395
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.26 KB | None | 0 0
  1. /**************
  2. This code is public domain.
  3.  
  4. This function increments a case-sensitive alphanumeric
  5. number.  It will use as many digits as you give it.  If
  6. it tries to increment a number that is at it's maximum
  7. (eg "ZZ"), it returns boolean false.
  8. **************/
  9.  
  10. define('NUMBER_START', ord('0'));
  11. define('NUMBER_END', ord('9'));
  12. define('LOWER_START', ord('a'));
  13. define('LOWER_END', ord('z'));
  14. define('UPPER_START', ord('A'));
  15. define('UPPER_END', ord('Z'));
  16.  
  17. function incrementNumber($number) {
  18.     if (strlen($number) == 0)
  19.         return false;
  20.    
  21.     $number = str_split($number);
  22.     $last = ord(array_pop($number));
  23.     switch ($last) {
  24.         case NUMBER_END:
  25.             $last = LOWER_START;
  26.             break;
  27.         case LOWER_END:
  28.             $last = UPPER_START;
  29.             break;
  30.         case UPPER_END:
  31.             $last = NUMBER_START;
  32.             $inc = incrementNumber(implode($number));
  33.             if ($inc === false)
  34.                 return false;
  35.             $number = str_split($inc);
  36.             break;
  37.         default:
  38.             $last++;
  39.     }
  40.     $last = chr($last);
  41.     $number[] = $last;
  42.     return implode($number);
  43. }
  44.  
  45. // Usage
  46. echo incrementNumber('0000'); // outputs "0001"
  47. echo incrementNumber('0aB4'); // outputs "0aB5"
  48. echo incrementNumber('0aB9'); // outputs "0aBa"
  49. echo incrementNumber('0aBz'); // outputs "0aBA"
  50. echo incrementNumber('0aBZ'); // outputs "0aC0"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement