Analizando el contenido de una carpeta en PHP
Supongamos que tenemos una carpeta dir,
que contiene tanto archivos como carpetas.
Obtengamos un array de nombres de esta carpeta:
<?php
$files = array_diff(scandir('dir'), ['..', '.']);
?>
Verifiquemos para cada nombre si es un archivo o una carpeta:
<?php
$files = array_diff(scandir('dir'), ['..', '.']);
foreach ($files as $file) {
echo $file;
var_dump(is_file('dir/' . $file));
}
?>
Tenga en cuenta que el nombre de la carpeta que escaneamos está escrito en dos lugares del código. Esto no es muy conveniente. Pongamos este nombre en una variable separada:
<?php
$dir = 'dir';
$files = array_diff(scandir($dir), ['..', '.']);
foreach ($files as $file) {
echo $file;
var_dump(is_file($dir. '/' . $file));
}
?>
Ahora mostremos en pantalla el contenido de todos los archivos:
<?php
$dir = 'dir';
$files = array_diff(scandir($dir), ['..', '.']);
foreach ($files as $file) {
if (is_file($dir. '/' . $file)) {
echo file_get_contents($dir. '/' . $file);
}
}
?>
Se puede notar que la ruta al archivo se calcula dos veces. Pongámosla en una variable separada:
<?php
$dir = 'dir';
$files = array_diff(scandir($dir), ['..', '.']);
foreach ($files as $file) {
$path = $dir. '/' . $file; // ruta al archivo
if (is_file($path)) {
echo file_get_contents($path);
}
}
?>
Se da una carpeta. Muestre en pantalla una columna de nombres de subcarpetas de esta carpeta.
Se da una carpeta. Muestre en pantalla una columna de nombres de archivos de esta carpeta.
Se da una carpeta. Escriba al final de cada archivo de esta carpeta el momento temporal actual.