Вопрос № 106051: Здравствуйте Уважаемые эксперты.
У меня такой вопрос. В папке "Х" находятся файлы вида bla_blabla_788-2587.wmv. В папке файлов много. Но все они заканчиваются цифрами. Минимум 1 максимум 4 цифры. При этом все они разные. Пишуться цифры ...
Вопрос № 106.051
Здравствуйте Уважаемые эксперты.
У меня такой вопрос. В папке "Х" находятся файлы вида bla_blabla_788-2587.wmv. В папке файлов много. Но все они заканчиваются цифрами. Минимум 1 максимум 4 цифры. При этом все они разные. Пишуться цифры через -.
Мне необходимо переименовать файлы, убрав цифры. Т.е. что бы файл был, после переименования, вида bla_blabla.wmv. Как можно это сделать.
Отвечает: Azrr
Здравствуйте, Новицкий Владимир Витальевич!
В приложении готовый скрипт, должен заметить, что он будет пытаться переименовать все файлы в директории.
Приложение:
Ответ отправил: Azrr (статус: 6-ой класс)
Ответ отправлен: 19.10.2007, 13:30 Оценка за ответ: 4
Отвечает: Бородин Александр Олегович
Здравствуйте, Новицкий Владимир Витальевич!
В PHP5 есть очень хорошая функция glob. Она позволяет выбрать имена файлов в определенной директории по маске. Например, можно сделать так...
if (is_dir('/path/to/X/')) {
$files = glob('/path/to/X/*.wmv');
for ($i = 0; $i < count($files); $i++) {
/*
Далее можно воспользоваться поиском и заменой с помощью регулярного выражения
*/
$filename = preg_replace('|[[:alpha:]]*(-0-9).wmv|i','',$files[$i]);
if (is_file($files[$i])) {
rename($files[$i],$filename);
}
}
}
?>
Далее позволю себе немного отступить от "протокола"...
Данный ответ следует считать оптимизированным ответом Azzr. Что оптимизировано? Ответ: выбор файлов в каталоге. Кроме того, обратите внимание, открывать каталог на чтение, запись, не нужно. А самое главное, скрипт не будет пытаться переименовать все файлы. Он будет переименовывать только те файлы, которые подходят по маске. Маска задается просто: "*" - любое количество любых символов, "?" - один любой символ.
Поиграйте со скриптом, уверен, Вы сможете сделать его еще лучше.
--------- Ничто не сближает людей так, как совместное преступление.
Ответ отправил: Бородин Александр Олегович (статус: Студент)
Ответ отправлен: 19.10.2007, 17:24 Оценка за ответ: 5