only files example php scandir

php - files - ¿Incluir archivos JUST en la matriz de scandir?



scandir php example (6)

La forma más rápida de eliminar puntos como archivos en scandir

$files = array_slice(scandir(''/path/to/directory/''), 2);

Del manual de PHP

Tengo una matriz que estoy recuperando de scandir, pero contiene "." y ".." y no quiero que lo haga.

Mi código:

$indir = scandir(''../pages''); $fileextensions = array(".", "php", "html", "htm", "shtml"); $replaceextensions = str_replace($fileextensions, "", $indir);

Estoy haciendo un reemplazo de cadena en las extensiones de archivo, lo que hace que [0] y [1] aparezcan vacíos, pero son "." y ".."

array(4) { [0]=> string(0) "" [1]=> string(0) "" [2]=> string(4) "test" [3]=> string(4) "home" }

¿Cómo eliminaría el "." y ".." de la matriz?


Puedes usar array_filter .

$indir = array_filter(scandir(''../pages''), function($item) { return !is_dir(''../pages/'' . $item); });

Tenga en cuenta que esto filtra todos los directorios y deja solo archivos y enlaces simbólicos. Si realmente desea excluir solo los archivos (y directorios) que comienzan con . , entonces podrías hacer algo como:

$indir = array_filter(scandir(''../pages''), function($item) { return $item[0] !== ''.''; });


Puedes usar este fragmento. Sólo devuelve archivos en el directorio:

function only_files($dir_element) { if (!is_dir($dir_element)) { return $dir_element; } } function givemefiles($dir) { $scanned_dir = scandir($dir); return array_filter($scanned_dir, "only_files"); } $dir_path = ''../pages''; givemefiles($dir_path); echo "<pre>"; var_dump($scanned_dir); echo "</pre>";


Soy consciente de que Erknrio proporcionó una respuesta para esto, pero aquí hay una forma más limpia de obtener una serie de archivos sin directorios (modificados para ser más eficientes):

$dirPath = ''dashboard''; $dir = scandir($dirPath); foreach($dir as $index => &$item) { if(is_dir($dirPath. ''/'' . $item)) { unset($dir[$index]); } } $dir = array_values($dir);


simplemente use preg_replace para eliminar todo tipo de archivos ocultos del directorio

$files = array(".", "..", "html", ".~html", "shtml"); $newfiles = preg_grep(''/^([^.])/'', scandir($files));


array_diff hará lo que estás buscando:

$indir = scandir(''../pages''); $fileextensions = array(".", "php", "html", "htm", "shtml"); $indir = array_diff($indir, array(''.'', ''..'')); $replaceextensions = str_replace($fileextensions, "", $indir);

http://php.net/manual/en/function.array-diff.php