Foros del Web » Programando para Internet » PHP »

listar archivos de una carpeta empezados por un nombre

Estas en el tema de listar archivos de una carpeta empezados por un nombre en el foro de PHP en Foros del Web. Hola tengo este codigo en php que lista archivos de una carpeta pero lista todo los archivos ademas estoy quitando la extencion con "substr" pero ...
  #1 (permalink)  
Antiguo 17/03/2011, 11:48
Avatar de Masterphp  
Fecha de Ingreso: septiembre-2009
Ubicación: /home/php/
Mensajes: 94
Antigüedad: 8 años, 11 meses
Puntos: 3
listar archivos de una carpeta empezados por un nombre

Hola tengo este codigo en php que lista archivos de una carpeta pero lista todo los archivos ademas estoy quitando la extencion con "substr" pero yo quiero que liste archivos empezados de nombre block_ ejemplo: block_afiliados.php block_encuesta.php, etc espero sus ayudas.

Código PHP:
Ver original
  1. <?
  2. $the_array = Array();
  3. $directorio = "modulos/php/";
  4. if(file_exists($directorio)){
  5. $handle = opendir($directorio);
  6. while (false !== ($file = readdir($handle))) {
  7.    if ($file != "." && $file != "..") {
  8.    $the_array[] = $file;
  9.    }
  10. }
  11. closedir($handle);
  12. sort ($the_array);
  13.                                     echo '<select name="url">';
  14.                                   echo '<option value="">Selecciona</option>';
  15. while (list ($key, $val) = each ($the_array)) {
  16. //   echo "<a href=download.php?id=$val>$val</a><br>";
  17.  $cortado = substr ($val, 0, -4);
  18. echo '<option value="'.$cortado.'.php" >'.$cortado.'</option>';
  19. }
  20. echo '<select/><br>';
  21. }else {
  22. echo "<div id=\"error\">No se ha creado carpeta \"$directorio\"</div>";
  23. }
  24. ?>
  #2 (permalink)  
Antiguo 17/03/2011, 13:00
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 10 años, 7 meses
Puntos: 845
Respuesta: listar archivos de una carpeta empezados por un nombre

Que tal Masterphp,

Si dispones de php 5.1+ podrias utilizar FilterIterator, te dejo un ejemplo de una clase básica.
Código PHP:
Ver original
  1. class CustomFileIterator extends FilterIterator
  2. {
  3.  
  4.     /**
  5.      * @var string
  6.      */
  7.     protected $_pattern;
  8.  
  9.     /**
  10.      * CustomFileIterator constructor
  11.      *
  12.      * @param  string|DirectoryIterator $dirOrIterator
  13.      * @return void
  14.      * @throws InvalidArgumentException
  15.      */
  16.     public function __construct($pattern, $dirOrIterator = '.')
  17.     {
  18.         if (is_string($dirOrIterator)) {
  19.             if (!is_dir($dirOrIterator)) {
  20.                 throw new InvalidArgumentException('Expected a valid directory name');
  21.             }
  22.  
  23.             $dirOrIterator = new RecursiveDirectoryIterator($dirOrIterator);
  24.         }
  25.         if (!$dirOrIterator instanceof DirectoryIterator) {
  26.             throw new InvalidArgumentException('Expected a DirectoryIterator');
  27.         }
  28.  
  29.         if ($dirOrIterator instanceof RecursiveIterator) {
  30.             $iterator = new RecursiveIteratorIterator($dirOrIterator);
  31.         } else {
  32.             $iterator = $dirOrIterator;
  33.         }
  34.         parent::__construct($iterator);
  35.         $this->_pattern = $pattern;
  36.         $this->rewind();
  37.     }
  38.  
  39.     /**
  40.      * @return boolean
  41.      */
  42.     public function accept()
  43.     {
  44.         $file = $this->getInnerIterator()->current();
  45.  
  46.         if (!$file instanceof \SplFileInfo
  47.             || !$file->isFile()
  48.             ) {
  49.             return false;
  50.         }
  51.  
  52.         if ($file->getBasename('.php') == $file->getBasename()) {
  53.             return false;
  54.         }
  55.  
  56.         return preg_match($this->_pattern, $file->getFilename());
  57.     }
  58. }

y para utilizarla:

Código PHP:
Ver original
  1. try {
  2.     $it = new CustomFileIterator('/^block_/', '/path/to/directory');
  3.     foreach($it as $file){
  4.         echo $file->getFilename() . PHP_EOL;
  5.     }
  6. } catch(InvalidArgumentException $e) {
  7.     echo $e->getMessage() . PHP_EOL;
  8. }

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 17/03/2011, 13:19
Avatar de Masterphp  
Fecha de Ingreso: septiembre-2009
Ubicación: /home/php/
Mensajes: 94
Antigüedad: 8 años, 11 meses
Puntos: 3
Respuesta: listar archivos de una carpeta empezados por un nombre

@masterpuppet, y para listar debo usar lafuncion "function __construct" quearia algo asi?

$directorio = __construct("modulos/php/");
  #4 (permalink)  
Antiguo 17/03/2011, 15:16
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 10 años, 7 meses
Puntos: 845
Respuesta: listar archivos de una carpeta empezados por un nombre

Te puse un ejemplo, pero bueno si quisieras listas los ficheros php que empiezan por block_ dentro de la carpeta modulos/php deberías hacer algo así:


Código PHP:
Ver original
  1. try {
  2.     $it = new CustomFileIterator('/^block_/', 'modulos/php');
  3.     foreach($it as $file){
  4.         echo $file->getFilename() . PHP_EOL;
  5.     }
  6. } catch(InvalidArgumentException $e) {
  7.     echo $e->getMessage() . PHP_EOL;
  8. }

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #5 (permalink)  
Antiguo 17/03/2011, 16:41
Avatar de hackjose  
Fecha de Ingreso: abril-2010
Ubicación: Edo Mexico
Mensajes: 1.178
Antigüedad: 8 años, 4 meses
Puntos: 131
Respuesta: listar archivos de una carpeta empezados por un nombre

Usa la funcion <a href="http://translate.google.com/translate?hl=es&sl=en&u=http://php.net/manual/en/function.glob.php&ei=lI2CTfvPHIa3tgervI2-BA&sa=X&oi=translate&ct=result&resnum=1&sqi=2&ved= 0CB8Q7gEwAA&prev=/search%3Fq%3Dglob%2Bphp%26hl%3Des%26prmd%3Divns">g lob()</a>
  #6 (permalink)  
Antiguo 17/03/2011, 16:41
Avatar de hackjose  
Fecha de Ingreso: abril-2010
Ubicación: Edo Mexico
Mensajes: 1.178
Antigüedad: 8 años, 4 meses
Puntos: 131
Respuesta: listar archivos de una carpeta empezados por un nombre

jejeje queria insertar un enlace la funcion se llama glob()

Etiquetas: listar, nombre, carpetas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:29.