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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Как делать автозамену в названиях файлов автоматически ???

Сообщения:  [1-10]   [11-12] 

 
 автор: ANGO   (23.01.2007 в 03:59)   письмо автору
 
   для: bronenos   (22.01.2007 в 12:49)
 

я поставил код в первом совете, вот весь код страницы:


<?
function get_microtime () { list ($usec$sec) = explode (" "microtime ()); return $usec $sec; }
define ("MICROTIME_START"get_microtime ());

function 
get_microtime_end() {
   
$round 3// величина округления.
   
defined ("MICROTIME_START")? $return round ((get_microtime () - MICROTIME_START), $round): $return "";
   return 
$return;
}
?>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Содержимое-Тип" content="text/html; charset=windows-1251">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<a href="index.php">NEW</a><br><br>
<form action="index.php" method="POST">
Old <input  class="f" name="old" size="50" maxlength="50"><br>
New <input  class="f" name="new" size="50" maxlength="50">
<br><br>
<input class="admin_b" type="submit" name="Submit" value="OK">
</form>
<?
if (isset($Submit))
{
$dir opendir ('.');
while ((
$file=readdir($dir)) !== false) {
 if (
$file!='..' && $file!='.') {
  
$file2 strtr ($file, array (
     
$old => $new
  
));
  if (
$file2 != $file)
   
rename ($file$file2);
 }
}
echo 
"Готово!<br>";
echo 
get_microtime_end();
}
?>
</body>
</html>

   
 
 автор: bronenos   (22.01.2007 в 12:49)   письмо автору
 
   для: bronenos   (22.01.2007 в 10:05)
 

function show ($addr)
{
  static $files=array();
  $dir = opendir ($addr."/");
  while (($file=readdir($dir)) !== false)
  {
    if ($file!="." && $file!="..")
    {
      if (is_dir($addr.'/'.$file.'/'))
        show ($addr.'/'.$file);
      else
        $files[]=$addr.'/'.$file;
    }
  }
 return $files;
}

$files = show ('.');
foreach ($files as $old) {
 $new = strtr ($old, array ( ' ' => '_' ));
 rename ($old, $new);
}


Вот, часть я скопировал у себя, часть подписал.
Не совсем уверен, конечно, но по идее так....
Пробуйте

   
 
 автор: bronenos   (22.01.2007 в 10:05)   письмо автору
 
   для: ANGO   (22.01.2007 в 00:26)
 

Как у вас выглядит код?
Лично я не понимаю, почему он так работает...

Насчет рекурсивного вызова, то это значит, что если файл .. или . то надо вызвать функцию опять

Я через 2 часа напишу вам свой скрипт,
когда физика закончится =))

   
 
 автор: ANGO   (22.01.2007 в 00:26)   письмо автору
 
   для: bronenos   (21.01.2007 в 23:59)
 

А вот этого недопонял, как это?
то есть я бы хотел что бы замена была не в директории скрипта, а в какой то отдельной папке, и во всех подпапках ....

а поповоду автозамены, так работает, если к примеру заменять все пробелы нижней чертой, то заменяет, но если менять *С_* на *_С_* вот тут то оно начинает
_С_
__С_
___С_
____С_

то есть меняет то что уже поменяло, потому что уже измененный вариант тоже подходит под условие поиска ...

   
 
 автор: bronenos   (21.01.2007 в 23:59)   письмо автору
 
   для: ANGO   (21.01.2007 в 22:55)
 

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

   
 
 автор: bronenos   (21.01.2007 в 23:56)   письмо автору
 
   для: bronenos   (21.01.2007 в 23:45)
 

Не проверял, но должно...

$dir = opendir ('.');
while (($file = readdir($dir)) !== false) {
 if ($file!='..' && $file!='.')
  $files[] = $file;
}

foreach ($files as $old) {
 // заменяем
 $new = strtr ($old, array (
  ' ' => '_'
 ));
 // сравниваем
 if ($new != $old)
  rename ($old, $new);
}

   
 
 автор: bronenos   (21.01.2007 в 23:45)   письмо автору
 
   для: ANGO   (21.01.2007 в 22:48)
 

Вы ничего не меняли?
Лично я просто таким же и пользуюсь у себя, правда, не скопировал, по новой написал... но сейчас немного переделаю...

   
 
 автор: ANGO   (21.01.2007 в 22:55)   письмо автору
 
   для: bronenos   (19.01.2007 в 21:18)
 

А как сделать так, что бы скрипт лазил во всех поддиректориях конкретной папки и изменял названия файлов там?

   
 
 автор: ANGO   (21.01.2007 в 22:48)   письмо автору
 
   для: bronenos   (19.01.2007 в 21:18)
 

но когда я делаю обратный процесс меняя *_Show *на *Show*, думая что скрипт разберет всю строку
___________________________________________________________Show

он уберает только одно нижнее подчеркивание?

   
 
 автор: ANGO   (21.01.2007 в 22:45)   письмо автору
 
   для: bronenos   (19.01.2007 в 21:18)
 

А чего скрипт зацикливается?
я меняю *Show* на *_Show*
скрипт зацикливается и выполняется до упора. в результате получается
______________________________________________Show

Как можно прогнать скрипт один раз?

Спасибо!

   

Сообщения:  [1-10]   [11-12] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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