Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Скрипт замены расширения
 
 автор: Santa7   (11.02.2011 в 14:37)   письмо автору
 
 

Здравствуйте, Нужна ваша помощь, я только начинающий и мне нужен скрипт замены расширения!

Есть галерея изображений в ней встречаются изображения типа image.jpg и image.JPG

Мне нужен скрипт который пробежиться по всем папкам и заменит расширение .JPG на .jpg

Заранее спасибо!

  Ответить  
 
 автор: SHAman   (11.02.2011 в 14:45)   письмо автору
 
   для: Santa7   (11.02.2011 в 14:37)
 

Это как раз хорошая задача для начинающего.

  Ответить  
 
 автор: Santa7   (11.02.2011 в 14:56)   письмо автору
 
   для: SHAman   (11.02.2011 в 14:45)
 

в каком направлении действовать хоть подскажите?

  Ответить  
 
 автор: Santa7   (11.02.2011 в 15:04)   письмо автору
 
   для: 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($string0, -$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');

?>


я вот так попробовал, а как мне все папки обойти, их может быть больше тысячи ?

  Ответить  
 
 автор: sim5   (11.02.2011 в 15:22)   письмо автору
 
   для: Santa7   (11.02.2011 в 15:04)
 

Используйте glob('path/*.JPG') и он вам вернет только те файлы, у которых расширение в верхнем регистре. Переименовывайте.

  Ответить  
 
 автор: Santa7   (11.02.2011 в 16:06)   письмо автору
 
   для: sim5   (11.02.2011 в 15:22)
 

не получается связать два скрипта

  Ответить  
 
 автор: sim5   (11.02.2011 в 16:28)   письмо автору
 
   для: 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 $oldrename ($oldsubstr_replace($old'jpg', -3));
}
echo 
"Сделано!";
Запустите скрипт из корня, а после окончания работы выбросите его, и следите за именованием при загрузке.

  Ответить  
 
 автор: lElectroHardl   (11.02.2011 в 18:31)   письмо автору
 
   для: Santa7   (11.02.2011 в 14:37)
 

А разве название файлов на сервере не переводятся в нижний регистр? (у меня так)
Если нет, возможно стоит сделать? Во избежания таких проблем и проблем с ними связаыными.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования