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

Reply via email to