subir - manejo de archivos en php ejemplos
La mejor forma de obtener archivos de un directorio filtrado por cierta extensión en php (7)
Posible duplicado:
Lista PHP de archivos específicos en un directorio
¡Usa php scandir ($ dir) y obtén solo imágenes!
Así que ahora tengo un directorio y estoy obteniendo una lista de archivos
$dir_f = "whatever/random/";
$files = scandir($dir_f);
Eso, sin embargo, recupera todos los archivos en un directorio. ¿Cómo puedo recuperar solo archivos con una cierta extensión como .ini de la manera más eficiente?
La función glob()
PHP te permite especificar un patrón para buscar.
PHP tiene una excelente función para ayudarte a capturar solo los archivos que necesitas. Se llama glob()
glob - Encuentra las rutas que coinciden con un patrón
Aquí hay un ejemplo de uso:
$files = array();
foreach (glob("/path/to/folder/*.txt") as $file) {
$files[] = $file;
}
Referencia -
Puedes intentar usar GlobIterator
$iterator = new /GlobIterator(__DIR__ . ''/*.txt'', FilesystemIterator::KEY_AS_FILENAME);
$array = iterator_to_array($iterator);
var_dump($array)
Si desea buscar más de una extensión, entonces preg_grep()
es una alternativa para filtrar:
$files = preg_grep(''~/.(jpeg|jpg|png)$~'', scandir($dir_f));
Aunque glob
tiene una sintaxis extra similar. Esto tiene más sentido si tiene otras condiciones, agregue el indicador ~i
para distinguir entre mayúsculas y minúsculas o puede filtrar listas combinadas.
no he probado la expresión regular pero algo como esto:
if ($handle = opendir(''/file/path'')) {
while (false !== ($entry = readdir($handle))) {
if (preg_match(''//.txt$/'', $entry)) {
echo "$entry/n";
}
}
closedir($handle);
}
prueba esto
//path to directory to scan
$directory = "../file/";
//get all image files with a .txt extension.
$file= glob($directory . "*.txt ");
//print each file name
foreach($file as $filew)
{
echo $filew;
$files[] = $filew; // to create the array
}
<?php
foreach (glob("*.txt") as $filename) {
echo "$filename size " . filesize($filename) . "/n";
}
?>