Me gustaría usar opendir() para listar solo las carpetas en una carpeta particular (es decir,/www/sitio /). Me gustaría excluir los archivos de la lista también en el '.' y '..' carpetas que aparecen en una lista de carpetas de Linux. ¿Cómo voy a hacer esto?PHP opendir() para enumerar carpetas solo
Respuesta
Echa un vistazo a PHP docs for readdir(). Incluye un ejemplo para esto exactamente.
Para completar:
<?php
if ($handle = opendir('.')) {
$blacklist = array('.', '..', 'somedir', 'somefile.php');
while (false !== ($file = readdir($handle))) {
if (!in_array($file, $blacklist)) {
echo "$file\n";
}
}
closedir($handle);
}
?>
Simplemente cambie opendir('.')
a su directorio, es decir opendir('/www/sites/')
, y actualizar $blacklist
para incluir los nombres de los archivos o directorios que no desea salida.
function scandir_nofolders($d) {
return array_filter(scandir($d), function ($f) use($d) {
return ! is_dir($d . DIRECTORY_SEPARATOR . $f);
});
}
Esta función devuelve una matriz que puede iterar sobre o almacenar en algún lugar, que es lo que el 99,37% de todos los programadores usando opendir
falta.
Los filtros están fallando porque, en la función anónima, $ dir no está dentro del alcance, por lo que aparece vacío. No estoy seguro de cómo resolver esto ... – Yarin
@Yarin Oops, tienes razón, este es el 'uso ($ d)' que falta por completo. Fijo. – phihag
@ phihag- Sí, lo descubrí demasiado, buena solución. – Yarin
foreach(glob('directory/*', GLOB_ONLYDIR) as $dir) {
$dir = str_replace('directory/', '', $dir);
echo $dir;
}
Se puede utilizar simplemente glob con GLOB_ONLYDIR y luego filtrar los directorios resultado
me funciona a la perfección. Enumera solo los directorios. Gracias – Imtiaz
Lista sólo las carpetas (directorios):
<?php
$Mydir = ''; ### OR MAKE IT 'yourdirectory/';
foreach(glob($Mydir.'*', GLOB_ONLYDIR) as $dir) {
$dir = str_replace($Mydir, '', $dir);
echo $dir;
}
?>
También podría usar echo nombre base ($ dir); en lugar de str_replace –
Intente esto con glob('*')
función
<?php
$dirs = array_filter(glob('*'), 'is_dir');
$i = 1;
foreach ($dirs as $value) {
echo $i . '. <a href = "http://localhost/' . $value . '" target = "_blank">' . $value . '</a><br>';
$i++;
}
?>
Arriba el código funcionó para mí para la lista de carpetas en el directorio actual y desarrollé más código para abrir cada carpeta en una nueva pestaña en el mismo navegador. Esto es solo muestra directorios.
También se puede utilizar en formularios para crear un menú desplegable de nombres de carpeta (aquí está la carpeta de imágenes). Asegura que un usuario la posibilidad de subir una imagen lo empuja a la carpeta correcta :-)
<select name="imgfolder">
<option value="genimage">General Image</option>
<?php
$Mydir = '../images/'; // use 'anydirectory_of_your_choice/';
foreach(glob($Mydir.'*', GLOB_ONLYDIR) as $dir) {
$dirname = basename($dir) ;
echo '<option value="' . $dirname . '">' . $dirname . '</option>' ;
}
?>
</select>
- 1. PHP is_readable falla pero opendir funciona
- 2. aws sdk php para listar carpetas s3
- 3. Cómo enumerar las carpetas vacías en Linux
- 4. comando FTP para enumerar solo directorios. ¿Imposible?
- 5. PHP: fopen para crear carpetas
- 6. Enumerar una estructura de carpetas en ASP clásico
- 7. ¿Cómo puedo enumerar solo las carpetas en el archivo zip en Python?
- 8. ¿Enumerar solo subcarpetas en C#?
- 9. ¿Debo intentar/atrapar opendir en PHP debido a E_WARNING?
- 10. ¿Cómo puedo enumerar todos los archivos en un directorio ordenados alfabéticamente usando PHP?
- 11. WinRT: aplicación para enumerar archivos fuera de bibliotecas y carpetas conocidas
- 12. CAML Consulta para seleccionar carpetas de nivel superior solo
- 13. ayuda con el script PHP para enumerar el directorio necesita ser recursivo
- 14. scandir() para encontrar las carpetas en un directorio (PHP)
- 15. /var/www/estructura de carpetas para el proyecto PHP
- 16. Arrastrar y soltar: solo se aceptan carpetas
- 17. Archivo por lotes para enumerar todas las carpetas en un directorio y salida a txt con
- 18. ¿Cómo enumerar solo ramas activas/recientemente modificadas en git?
- 19. ¿Cómo enumerar solo los directorios de nivel superior en Python?
- 20. rango (len (lista)) o enumerar (enumerar)?
- 21. Cambiar \ parskip solo dentro del entorno enumerar y detallar
- 22. Enumerar todos los usuarios en LDAP con PHP
- 23. ¿Cómo enumerar todas las carpetas y sus subdirectorios/archivos en el SDK de iPhone?
- 24. Eclipse: cómo configurar las advertencias de javadoc solo para carpetas específicas, no para todo el proyecto
- 25. Mostrar solo advertencias desde algunas carpetas en eclipse
- 26. php: ¿número solo hash?
- 27. Enumerar espacios de nombres registrados de un objeto PHP DOMDocument
- 28. PHP cómo enumerar todas las funciones públicas de la clase
- 29. ¿Es posible enumerar todas las variables globales en PHP?
- 30. algoritmo para enumerar todos los posibles caminos
Esto sólo filtros '' .' y ..', no otros directorios. – phihag
@phihag, buen punto. Ver actualización –
Gracias, funcionó ... Estuve mirando al hombre por opendir. No vi la página para leer. –