Frage von basetrick2, 16

Warum gibt scandir . und .. als Verzeichnis aus?

Code: <?php $dir = '/tmp'; $files1 = scandir($dir); $files2 = scandir($dir, 1);

print_r($files1); print_r($files2); ?> Ausgabe:

Array ( [0] => . [1] => .. [2] => bar.php [3] => foo.txt [4] => somedir ) Array ( [0] => somedir [1] => foo.txt [2] => bar.php [3] => .. [4] => . )

Antwort
von Royce, 16

Ich könnte mir gut vorstellen, dass die Funktion scandir() die cmd-Funktion dir nutzt. Da werden . und .. auch als eigene Einträge dargestellt. Wenn du sie nicht in deinem array haben willst könntest du die Einträge einfach mit nem Regex rausschmeissen.

Kommentar von basetrick2 ,

Du hast recht das scandir die cmd funktion dir verwendet, aber wie kriegst du das mit regex hin?

Ich habe es mit einer foreach schleife und einem if gelöst

foreach($dir AS $datei)

if($datei!=="." && $datei!=="..")

echo $datei


Kommentar von Royce ,

Entweder so, oder du machst es über die Funktion preg_match()
Nagel mich nicht drauf fest, das ist schon sehr sehr lange her, aber es müsste in etwa so aussehen:
$regexpattern="(\.|\..)"
preg_match(<zu lange her für mich :D>)

Keine passende Antwort gefunden?

Fragen Sie die Community