2016-02-29 2 views
0

Я хочу, чтобы иметь возможность переименовывать файлы с помощью PHP.Переименовать файлы с помощью PHP

Следующий скрипт проверяет, существует ли новое имя. Если он делает (и включает суффикс), суффикс будет увеличен.

if(file_exists($fileName)) { 
     $fileNewName= preg_replace_callback('/(?<=_)\d+(?=\.)/',     
     function ($m) { return ++$m[0]; }, 
     $fileName); 
} 

Однако, если файл не содержит суффикса, в файл не добавляется ни одна.

Пример:

filename_1.txt becomes filename_2.txt 
however 
filename.txt is not renamed. 

Можете ли вы помочь мне добавить суффикс (_1) является не существовало суффикс. Пример:

filename.txt becomes filename_1.txt 

ответ

0

Возможно, что-то вроде этого (не проверено):

if(file_exists($fileName)) { 
    $fileNewName = preg_replace_callback('/(?:(?<=_)\d+)?(?=\.[^.]*$)/',     
     function ($m) { return empty($m[0]) ? '_1' : ++$m[0]; }, 
     $fileName, 1); 
} 

Короче говоря, вы делаете начало опциональный (?:(?<=_)\d+)? и вы убедитесь, что точка является последним (?=\.[^.]*$). Использование тернарного оператора, когда $m[0] пуст, вы возвращаете '_1' еще прибавочное значение.

+0

Спасибо за ваш ответ.
Ваше предложение добавляет _1 суффикс, если он не существует.
filename.txt становится filename_1.txt
Однако
последующего переименования результатов файла с
filename_1.txt становится filename_2_1.txt
user3117340

+0

К сожалению, я не знаю, как добавить отформатированные комментарии – user3117340

+0

@ user3117340: действительно, вам нужно установить только параметр предела 1, см. редактирование. –

Смежные вопросы