[PHP] Re: Renaming Directories

2005-03-21 Thread Daniel Schierbeck
Daniel Schierbeck wrote:
I've made a small PHP script that renames the files and folders in my 
music library, to make them more linux-friendly. I'm running PHP 5.0.3 
on version 2.6.9 kernel.

What's happening is that all files and folders are renamed, except for 
folders whose names consist of one word only (such as Toto), which is 
still with a capital T. Here is the script and the result I'm getting:

?php
error_reporting(E_ALL | E_STRICT);
header('Content-Type: text/plain');
function clean_filename ($str) {
  $str = strtolower($str);
  $str = str_replace(' - ', '-', $str);
  $str = str_replace(' ', '_', $str);
  $str = str_replace('\'', '', $str);
  return $str;
}
function parse_dir ($dir_name) {
  $dir = opendir($dir_name);
  while (false !== ($file = readdir($dir))) {
if ($file != '.'  $file != '..') {
  $path_old = $dir_name  . $file;
  $path_new = $dir_name . clean_filename($file);
  echo renaming $path_old to $path_new... ;
  echo rename($path_old, $path_new) ? done\n : failed\n;
  if (is_dir($file)) parse_dir($path_old);
}
  }
  closedir($dir);
}
parse_dir('/shared/music/');
?
renaming /shared/music/dire_straits to /shared/music/dire_straits... done
renaming /shared/music/johnny_winter to /shared/music/johnny_winter... done
renaming /shared/music/pink_floyd to /shared/music/pink_floyd... done
renaming /shared/music/ten_years_after to 
/shared/music/ten_years_after... done
renaming /shared/music/the_doors to /shared/music/the_doors... done
renaming /shared/music/Santana to /shared/music/santana... done
renaming /shared/music/the_jimi_hendrix_experience to 
/shared/music/the_jimi_hendrix_experience... done
renaming /shared/music/the_velvet_underground to 
/shared/music/the_velvet_underground... done
renaming /shared/music/tim_christensen to 
/shared/music/tim_christensen... done
renaming /shared/music/dizzy_mizz_lizzy to 
/shared/music/dizzy_mizz_lizzy... done
renaming /shared/music/Toto to /shared/music/toto... done
renaming /shared/music/Cream to /shared/music/cream... done
renaming /shared/music/Filopahpos to /shared/music/filopahpos... done
renaming /shared/music/bob_dylan to /shared/music/bob_dylan... done
renaming /shared/music/dinojax to /shared/music/dinojax... done
renaming /shared/music/red_hot_chili_peppers to 
/shared/music/red_hot_chili_peppers... done
renaming /shared/music/peter_frampton to /shared/music/peter_frampton... 
done
renaming /shared/music/louis_armstrong-what_a_wonderful_world.mp3 to 
/shared/music/louis_armstrong-what_a_wonderful_world.mp3... done


As you can see, the rename() returns TRUE, but it doesn't rename the 
folder.

I hope you guys can help me out, because otherwise I'll have to do it 
manually (which I'm too lazy to even consider.)

Daniel
Ooops, that should've been parse_dir($path_new) instead of 
parse_dir($path_old).

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


Re: [PHP] Re: Renaming Directories

2005-03-21 Thread Frank Arensmeier
Hello Daniel!
In the code it says:
echo rename($path_old, $path_new) ? done\n : failed\n;
I assume that this line is supposed to actually rename the directory. 
Why did you wrote echo before rename?

Try to change the code to:
if (!rename($path_old,$path_new)) {
echo failed\n;
}
else
{
echo done\n;
}
May this helps!
/frank
2005-03-21 kl. 15.07 skrev Daniel Schierbeck:
Daniel Schierbeck wrote:
I've made a small PHP script that renames the files and folders in my 
music library, to make them more linux-friendly. I'm running PHP 
5.0.3 on version 2.6.9 kernel.
What's happening is that all files and folders are renamed, except 
for folders whose names consist of one word only (such as Toto), 
which is still with a capital T. Here is the script and the result 
I'm getting:
?php
error_reporting(E_ALL | E_STRICT);
header('Content-Type: text/plain');
function clean_filename ($str) {
  $str = strtolower($str);
  $str = str_replace(' - ', '-', $str);
  $str = str_replace(' ', '_', $str);
  $str = str_replace('\'', '', $str);
  return $str;
}
function parse_dir ($dir_name) {
  $dir = opendir($dir_name);
  while (false !== ($file = readdir($dir))) {
if ($file != '.'  $file != '..') {
  $path_old = $dir_name  . $file;
  $path_new = $dir_name . clean_filename($file);
  echo renaming $path_old to $path_new... ;
  echo rename($path_old, $path_new) ? done\n : failed\n;
  if (is_dir($file)) parse_dir($path_old);
}
  }
  closedir($dir);
}
parse_dir('/shared/music/');
?
renaming /shared/music/dire_straits to /shared/music/dire_straits... 
done
renaming /shared/music/johnny_winter to 
/shared/music/johnny_winter... done
renaming /shared/music/pink_floyd to /shared/music/pink_floyd... done
renaming /shared/music/ten_years_after to 
/shared/music/ten_years_after... done
renaming /shared/music/the_doors to /shared/music/the_doors... done
renaming /shared/music/Santana to /shared/music/santana... done
renaming /shared/music/the_jimi_hendrix_experience to 
/shared/music/the_jimi_hendrix_experience... done
renaming /shared/music/the_velvet_underground to 
/shared/music/the_velvet_underground... done
renaming /shared/music/tim_christensen to 
/shared/music/tim_christensen... done
renaming /shared/music/dizzy_mizz_lizzy to 
/shared/music/dizzy_mizz_lizzy... done
renaming /shared/music/Toto to /shared/music/toto... done
renaming /shared/music/Cream to /shared/music/cream... done
renaming /shared/music/Filopahpos to /shared/music/filopahpos... done
renaming /shared/music/bob_dylan to /shared/music/bob_dylan... done
renaming /shared/music/dinojax to /shared/music/dinojax... done
renaming /shared/music/red_hot_chili_peppers to 
/shared/music/red_hot_chili_peppers... done
renaming /shared/music/peter_frampton to 
/shared/music/peter_frampton... done
renaming /shared/music/louis_armstrong-what_a_wonderful_world.mp3 to 
/shared/music/louis_armstrong-what_a_wonderful_world.mp3... done
As you can see, the rename() returns TRUE, but it doesn't rename the 
folder.
I hope you guys can help me out, because otherwise I'll have to do it 
manually (which I'm too lazy to even consider.)
Daniel
Ooops, that should've been parse_dir($path_new) instead of 
parse_dir($path_old).

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php