Problem mit rekursiven verzeichnis durchlauf

  • Themenstarter Themenstarter ByeBye 182971
  • Beginndatum Beginndatum
B

ByeBye 182971

Guten Tag zusammen,

ich hab einProblem mit dem Rekursiven Verzeichnis durchlauf eines scripts. Der Durchlauf an sich und das listen der files ist kein Ding. Das Problem ist, dass ich auch noch die Datei endungen abgleichen will.

hier ist mein code der aber leider nicht funktioniert, da er immer nur den letzten filetyp im array $types ausgibt (außerdem ist die performance mies):

EDIT: Habs geschafft aber das ist definitiv nicht die beste lösung das muss auch alles in 2 schleifen gehen statt 6 oder so^^!

PHP:
<?php

function read_recursiv($path, $type)
{
	$result = array();

	$handle = opendir($path);

	if ($handle)
	{
		while (false !== ($file = readdir($handle)))
		{
			if ($file != "." && $file != "..")
			{
				$name = $path . "/" . $file;
				if (is_dir($name))
				{
					$ar = read_recursiv($name, $type);
					foreach ($ar as $value)
					{
						$result[] = $value;
					}
				}
				else
				{
					if (stripos($file, $type))
					$result[] = $name;
				}
			}
		}
	}
	closedir($handle);
	return $result;
}

$types=array("gif", "jpg", "txt");

foreach ($types as $key => $type)
{
	$data[] = read_recursiv(".", $type);
}

echo "<b>" . count($data, COUNT_RECURSIVE) . " Dateien gefunden</b><br>\n";
foreach ($data as $key => $value)
{
	foreach ($value as $key => $result)
	{
		echo "$result<br>\n";
	}
}
?>
 
Zuletzt bearbeitet von einem Moderator:
hm ich schaus mir mal an aber das Problem ist, dass die dateiendungen in einem array sind

ich habs auch schon so gemacht:
PHP:
[..]
$exp = explode('.',$file);
if ($file != "." && $file != ".." && in_array(end($exp), $types))
[..]

Das funktioniert aber nicht, weil er dann nur das letzte Element des $types arrays nimmt. Das heißt für mich dass da irgendwie noch eine schleife fehlt

aber danke für die info das ist glaub ich schon ne gute Funktion ;)
 
ok habe es mit einer extrafunktion geschafft die auf die dateiendung testet...

mit glob war da leider nichts zu machen!

trotzdem danke gumbo!

ist erledigt das thema
 
Zurück