counting with leading zeros

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I have a directory that contains many images (no, not pr0n, unfortunately) and i'm working on an admin script for adding to it. I've got something that works alright but i'm wondering if there's a Better Way.

Each image is named like: foo_01.jpg, foo_02.jpg, bar_01.jpg, and so on. When adding a new image it should be assigned the next number in the series (the prefix is known). Thus, given the prefix 'bar' i do something like:

function getNextImage($path, $prefix)
{
  $pattern = "/^${prefix}_([0-9]{2})\.[a-z]{3}$/";

  $filenames = glob("${path}${prefix}*");
	
  if (is_array($filenames) && sizeof($filenames))
  {
    sort($filenames);

    /* eg. 'foo_32.jpg'
     */
    $last = basename(array_pop($filenames));

    /* pull the number from the filename
     */
    $count = intval(preg_replace($pattern, '$1', $last));

    /* increment, format with leading zero again if necessary,
     * and return it
     */
    return sprintf('%02d', ++$count)
  }
  else
  {
    return '01';
  }
}

Note that there almost certainly will never be more than 99 images to a series. In any case, i don't care about there being more than one leading zero. One is what i want.

brian

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux