Endung hinzufügen

Hi

Ich habe versucht selber deinen Script zu "erwitern". Was ist daran falsch?

PHP:
<?php


benennen('/img/');
benennen('/img1/');
benennen('/img2/');
benennen('/img3/');



$d= $ordner;
$h=opendir ($d);



function benennen($ordner)

{

while (false !== ($f = readdir ($h))) 
{
    if(is_file($d.$f) && preg_match('#.+\.(gif|png|jpe?g)$#i',$f))
      {
        if(!preg_match('#_icon\.(gif|png|jpe?g)$#i',$f))
          {
            $n=preg_replace('#^(.+)\.(gif|png|jpe?g)$#i','\\1_icon.\\2',$f);
            if(rename($d.$f,$d.$n))
              {
                echo '<hr><strong>Umbenannt:</strong>'.$f.'-&gt;'.$n;
              }
            else
              {
                echo '<hr><strong>Fehler:</strong>'.$f;
              }
          }
      }
}
closedir($h); 

}
?>

Mhh ich finde den Fehler nicht, aber gut ich kenne mich auch ned so gut aus^^

greets green
 
Gar nichts... ich klicke es an und: weißer schöner Bildschirm :) und links unten im Browser steht "fertig"...

Hast du ne Ahnung was da nicht stimmen könnte?
 
Ich habs jetz im inet getestet und es passiert folgendes: Weißer Bildschirm mit folgender Schrift:

Code:
Warning: readdir(): supplied argument is not a valid Directory resource in /usr/export/www/vhosts/funnetwork/hosting/partywien/#s/rwrite Kopie.php on line 17

Warning: closedir(): supplied argument is not a valid Directory resource in /usr/export/www/vhosts/funnetwork/hosting/partywien/#s/rwrite Kopie.php on line 32

Warning: readdir(): supplied argument is not a valid Directory resource in /usr/export/www/vhosts/funnetwork/hosting/partywien/#s/rwrite Kopie.php on line 17

Warning: closedir(): supplied argument is not a valid Directory resource in /usr/export/www/vhosts/funnetwork/hosting/partywien/#s/rwrite Kopie.php on line 32

Warning: readdir(): supplied argument is not a valid Directory resource in /usr/export/www/vhosts/funnetwork/hosting/partywien/#s/rwrite Kopie.php on line 17

Warning: closedir(): supplied argument is not a valid Directory resource in /usr/export/www/vhosts/funnetwork/hosting/partywien/#s/rwrite Kopie.php on line 32

Warning: readdir(): supplied argument is not a valid Directory resource in /usr/export/www/vhosts/funnetwork/hosting/partywien/#s/rwrite Kopie.php on line 17

Warning: closedir(): supplied argument is not a valid Directory resource in /usr/export/www/vhosts/funnetwork/hosting/partywien/#s/rwrite Kopie.php on line 32


Was soll das bedeuten?

greets green
 
Code:
supplied argument is not a valid Directory

das bedeutet, dass z.b. der ordner gar nicht existiert.

oder vielleicht keine leserechte hat (chmod)
 
Bei fehlenden Rechten würd ne chmod-Errormeldung ausgespuckt werden. Hier denke ist das Problem, dass es das angegebene Directory schlichtweg nicht gibt :)

Hier ist das Problem innerhalb der Funktion. Du versuchst das Verzeichnis $h zu öffnen. In dieser Variable ist aber nix gespeichert. Gib bei readdir() den richtigen Ordner an.
 
Aber da sthet ja:

PHP:
$d= $ordner;
$h=opendir($d);

Das heißt ich kann mit dem Parameter $ordner dann den Ordner festlegen.
Wenn ich ein bestimmtes Verzeichniss bei readdir() eingebe dann kann ich nur einen Ordner angeben. Ich will aber das der Script auf 4 Ordner wirkt...
Ich sag ja openddir() das er als Verzeichniss $d nimmt. Und $d = $ordner. Also warum funkt das nicht?

greets green
 
Du hast den Ordner zwar korrekt an die Funktion übergeben, allerdings dann darin nicht gebraucht. Schau mal, ob folgendes klappt (also nicht blos schauen. Durchlesen und verstehen!):

PHP:
<?php
	benennen('/img/');
	benennen('/img1/');
	benennen('/img2/');
	benennen('/img3/');

	function benennen($directory) {

	$handler = opendir ($directory);

	while (false !== ($file = readdir ($handler))) {
		if(is_file($directory.$file) && preg_match('#.+\.(gif|png|jpe?g)$#i',$file))	{
			if(!preg_match('#_icon\.(gif|png|jpe?g)$#i',$f)) {
				$name = preg_replace('#^(.+)\.(gif|png|jpe?g)$#i','\\1_icon.\\2',$file);

				if(rename($directory.$file,$directory.$name))	{
					echo '<hr><strong>Umbenannt:</strong>'.$file.'-&gt;'.$name;
				}else{
					echo '<hr><strong>Fehler:</strong>'.$file;
				}
			}
		}
	}

	closedir($handler); 

}
?>
 
Ich hab das jetz so verstanden:
ich habe in meinem Script zwar das Verzeichniss geöffnet aber habe es nicht gelesen via readdir() und dadurch findet der Script nicht was er umbenennen soll?

Ich finde dein Script ist logisch und ich vertehe ihn auch, zumindest lesen kann ich ihn und vertehen, aber bis ich sowas mal schreiben kann ohne irgendwo abzulesen.. puhh :).

Jedoch, funktioniert der Script trotzdem nicht.... wieder einfach nur ein weißer Bildschirm und er tut nix.
Ich habe auch schon versucht "$directory" direkt zuzuweisen und und "erzeugen($directory)" gemacht. Hat auch nicht funktioniert...
Darasu schliese ich das der Fehler irgendwo in dre Funktion liegen muss...
aber wo?

greets green
 
Zurück