Ver Mensaje Individual
  #9 (permalink)  
Antiguo 26/11/2015, 17:11
cdmarco92
 
Fecha de Ingreso: noviembre-2015
Mensajes: 29
Antigüedad: 8 años, 6 meses
Puntos: 0
Respuesta: Consejo para buscador de archivos

Cita:
Iniciado por mortiprogramador Ver Mensaje
Saludo.
Bueno, pues ese código encuentra la primera coincidencia y la retorna,
en cuyo caso sirve pero no a totalidad para lo que se quiere.

Propongo manejar un arreglo para las n coincidencias (Inicializar $ret =array() antes del primer if,
así entonces en el primer return hacer esto

Código PHP:
Ver original
  1. $ret[] = ($dir.'/'.$archivo);

Luego, en el if que comprueba is_dir, no usar el if interno y su contenido,
y solo dejar esto

Código PHP:
Ver original
  1. $ret[]=buscar($dir.'/'.$archivo,$archivo_buscar);

Y finalmente, en vez de hacer return false en la parte final, retornar el arreglo.
Código PHP:
Ver original
  1. return $ret;

Esto en cuanto a la función, y a la hora de invocar a la función,
el echo ya no se usaría directamente pues daría problemas
de conversión de array a string, por ende, se asignaría a una variable
lo que retorne esta función, y luego se recorrería con un for puede ser.

Código PHP:
Ver original
  1. $ret = buscar('laruta' ,$archivo);
  2.     echo 'Se encontraron '.sizeof($ret).' coincidencias</br>';
  3.     for($i = 0; $i < sizeof($ret); $i++)
  4.     {
  5.         if( $i == (sizeof($ret)-1))
  6.             echo $ret[$i].'</br>';
  7.         else
  8.         {
  9.             if(!empty($ret[$i]))
  10.                 echo $ret[$i][0].'</br>';
  11.         }
  12.     }

Hola que tal mortiprogramador me he topado con una funcion recursiva que hace lo que requiero.
Ahora tengo problemas con ella para ingresar el nombre del archivo a buscar desde un formulario, me podrias ayudar?

hago lo siguiente
Código PHP:

<form action="miarchivo.php" method="post" >
<
input type"text" name"busca"/>
<
input type"submit"/>
</
form>

class 
FileExtensionFilter extends FilterIterator
{
    protected 
$archivos $_POST['busca'];
    public function 
accept() {
        return 
in_array($this->getFilename(), $this->archivos);
    }
}
if(isset(
$_POST['busca'] ))    
{
$directorio = new RecursiveDirectoryIterator("/mi/directorio");
$recursive = new RecursiveIteratorIterator($directorio);
$filtrado = new FileExtensionFilter($recursive);
foreach (
$filtrado as $archivo) {
    echo 
$archivo PHP_EOL;
}

y me devuelve error en la linea: " protected $archivos =$_POST['busca']; "
El error dice unexpected '$_POST' (T_VARIABLE) y no se de que forma recibirlo de manera correcta en mi PHP

GRACIAS