|
|
|
| Здравствуйте, Нужна ваша помощь, я только начинающий и мне нужен скрипт замены расширения!
Есть галерея изображений в ней встречаются изображения типа image.jpg и image.JPG
Мне нужен скрипт который пробежиться по всем папкам и заменит расширение .JPG на .jpg
Заранее спасибо! | |
|
|
|
|
|
|
|
для: Santa7
(11.02.2011 в 14:37)
| | Это как раз хорошая задача для начинающего. | |
|
|
|
|
|
|
|
для: SHAman
(11.02.2011 в 14:45)
| | в каком направлении действовать хоть подскажите? | |
|
|
|
|
|
|
|
для: SHAman
(11.02.2011 в 14:45)
| |
<?php
function changeext($directory, $ext1, $ext2, $verbose = false) {
$num = 0;
if($curdir = opendir($directory)) {
while($file = readdir($curdir)) {
if($file != '.' && $file != '..') {
$srcfile = $directory . '/' . $file;
$string = "$file";
$str = strlen($ext1);
$str++;
$newfile = substr($string, 0, -$str);
$newfile = $newfile.'.'.$ext2;
$dstfile = $directory . '/' . $newfile;
if (eregi("\.$ext1",$file)) {
$fileHand = fopen($srcfile, 'r');
fclose($fileHand);
rename($srcfile, $dstfile );
}
if(is_dir($srcfile)) {
$num += changeext($srcfile, $ext1, $ext2, $verbose);
}
}
}
closedir($curdir);
}
return $num;
}
changeext('folder', 'JPG', 'jpg', 'false');
?>
|
я вот так попробовал, а как мне все папки обойти, их может быть больше тысячи ? | |
|
|
|
|
|
|
|
для: Santa7
(11.02.2011 в 15:04)
| | Используйте glob('path/*.JPG') и он вам вернет только те файлы, у которых расширение в верхнем регистре. Переименовывайте. | |
|
|
|
|
|
|
|
для: sim5
(11.02.2011 в 15:22)
| | не получается связать два скрипта | |
|
|
|
|
|
|
|
для: Santa7
(11.02.2011 в 16:06)
| | А чего там связывать, в вашем скрипте вы, думаю, знаете как отличить файл от директории, значит можете строить путь. А коли пути известны, то задавайте их glob, вот и вся связка.
PS. Файлы лучше именовать при загрузке (любым способом, как то формой или копированием), и стричь их на один манер, налысо, вот тогда не придетя так мучиться.
PPS. Заниматься такими операциями негоже, и можно только единожды, ради наведения порядка. А значит мудрить не надо. Вы знаете конкретно в каких папках надо переименовать файлы, следовательно пропишите пути этих папок от корня в массиве, и пройдя массив этот переименуйте файлы (открывать их, как делаете вы, совсем не требуется):
<?
//пропишите все свои пути в массив
$a = array('path/path/path/*.JPG','path/path/*.JPG','path/*.JPG');
//переименование
foreach($a as $file) {
$m = glob($file);
foreach($m as $old) rename ($old, substr_replace($old, 'jpg', -3));
}
echo "Сделано!";
| Запустите скрипт из корня, а после окончания работы выбросите его, и следите за именованием при загрузке. | |
|
|
|
|
|
|
|
для: Santa7
(11.02.2011 в 14:37)
| | А разве название файлов на сервере не переводятся в нижний регистр? (у меня так)
Если нет, возможно стоит сделать? Во избежания таких проблем и проблем с ними связаыными. | |
|
|
|