Foros del Web » Programando para Internet » PHP »

busqueda de archivos en directorios

Estas en el tema de busqueda de archivos en directorios en el foro de PHP en Foros del Web. Estoy realizando la busqueda de archivos dentro de directorios por fecha , pero tengo algunos problemas ya que el nombre del archivo esta compuesto en ...
  #1 (permalink)  
Antiguo 15/11/2013, 07:46
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 3 meses
Puntos: 61
busqueda de archivos en directorios

Estoy realizando la busqueda de archivos dentro de directorios por fecha , pero tengo algunos problemas ya que el nombre del archivo esta compuesto en una parte por la hora y ese dato no coincide con el de la base de datos (son grabaciones una es la hora del servidor y la otra de la bbdd).

est-696_fecha-20131107111910_op-1478_tel-26912980_id-14046166.mp3

Lo marcado en negrita es el dato que no tengo, este es mi script .

Código PHP:
Ver original
  1. <?php
  2.  
  3. $fecha = $_GET['fecha'];
  4. $id_estudio = $_GET['idest'];
  5. $entrevistador = $_GET['entrev'];
  6. $tel = $_GET['tel'];
  7. $id_contacto = $_GET['idcont'];
  8.  
  9. /**
  10.  * Función recursiva que va mostrando los archivos y carpetas
  11.  * Tiene que recibir:
  12.  *  $path => directorio donde buscar los archivos. Tiene que terminar con la
  13.  *  barra de dividir... /directory/
  14.  */
  15. function showFiles($path)
  16. {
  17.     // asignamos a $directorio el objeto dir creado con la ruta
  18.     $directorio = dir($path);
  19.    
  20.     // recorremos todos los archivos y carpetas
  21.     echo "<div style='padding-left:20px;'>";
  22.     while ($archivo = $directorio -> read())
  23.     {
  24.         if($archivo!="." && $archivo!="..")
  25.         {
  26.             if(is_dir($path.$archivo))
  27.             {
  28.                 # Mostramos el nombre de la carpeta y los archivo contenidos
  29.                # en la misma
  30.                echo "<div>";
  31.                     echo get_infoFile($path,$archivo);
  32.                 echo "</div>";
  33.                
  34.                 # llamamos nuevamente a la función con la nueva carpeta
  35.                showFiles($path."/".$archivo."/");
  36.             }else{
  37.                 // Mostramos el archivo
  38.                 echo "<div>";
  39.                     echo get_infoFile($path,$archivo);
  40.                 echo "</div>";
  41.             }
  42.         }
  43.     }
  44.     echo "</div>";
  45.     $directorio -> close();
  46. }
  47.  
  48. /**
  49.  * funcion que devuelve información en fotmato html sobre un archivo dado
  50.  * Tiene que recibir el $path y $archivo
  51.  */
  52. function get_infoFile($path,$archivo)
  53. {
  54.     $finfo = finfo_open(FILEINFO_MIME_TYPE);
  55.    
  56.     $cadena="<div>".$archivo."</div>";
  57.  
  58.     return $cadena;
  59. }
  60.  
  61. # inicio función recursiva
  62.  
  63. showFiles("/home/www/recordings/archivos/$fecha");
  64. ?>


Saludos y gracias
  #2 (permalink)  
Antiguo 15/11/2013, 08:03
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Respuesta: busqueda de archivos en directorios

Holas, matt_1985.

Si sabes cómo se arma el nombre del archivo de antemano, puedes hacer la comparación siguiendo la regla con la que fue armado. Por ejemplo, me da la impresión que en tu caso, el componente clave acá es el guión bajo, ya que une a todas las partes del nombre de archivo:

Código PHP:
$nombre_archivo "est-696_fecha-20131107111910_op-1478_tel-26912980_id-14046166.mp3";

// si sabes las partes con que se forma el nombre de archivo,
// las almacenas temporalmente en el orden en que corresponde:
// en el ejemplo te lo doy con código fijo, pero tú debes llenarlo con variables
$partes = array("est-696""fecha-20131107""op-1478""tel-26912980""id-14046166.mp3");

// divides el nombre del archivo por el separador preestablecido:
$archivo explode("_"$nombre_archivo);
$i 0;

// comparas cada parte con su parte:
foreach ($partes as $parte)
{
 
// si las partes son iguales o
 // si es el caso de la fecha, sólo comparas el sector de la fecha,
 // ignorando la hora
 
if ($parte == $archivo[$i] || ($i == && substr($archivo[$i], 014) == $parte))
 {
  
$aciertos++;
 }
 
$i++
}

if (
count($partes) == $aciertos)
{
 
// encontrado!

Uff, salió medio largo, pero a ver si te sirve o te ayuda a encontrar una solución mejor ^^

Saludos!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*

Etiquetas: busqueda, directorios, fecha, html
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 06:06.