Именование копий файлов в php при загрузке и сохранении

Файл менеджеры в системе именуют копии чтобы их не перезаписывать, а сохранять с новым названием добавляя некий постфикс . Когда мы загружаем файл с одинаковым именем, копии названий именуются например так:

name.jpg name(1).jpg name(2).jpg name(3).jpg и т.д.

Чтобы реализовать это же на php можно сделать так:

$n = 1;
while (file_exists($dst_filename)) {
    $pathinfo = pathinfo($dst_filename);
    if (preg_match('#(.+)\(\d+\)$#', $pathinfo['filename'], $matches)) {
        $dst_filename = $pathinfo['dirname'] . '/' . $matches[1] . '(' . $n . ')' . '.' . $pathinfo['extension'];
    } else {
        $dst_filename = $pathinfo['dirname'] . '/' . $pathinfo['filename'] . '(1)' . '.' . $pathinfo['extension'];
    }
    $n++;
}

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *