Foros del Web » Programando para Internet » PHP »

Buscador de archivos simple

Estas en el tema de Buscador de archivos simple en el foro de PHP en Foros del Web. Hola gente! tengo el siguiente codigo para buscar archivos: Código PHP: <?php  function  ordenar ( $c , $d ){ global  $file_folder ; $c = time ...
  #1 (permalink)  
Antiguo 07/03/2010, 16:09
c0w
 
Fecha de Ingreso: enero-2008
Mensajes: 146
Antigüedad: 16 años, 3 meses
Puntos: 0
Buscador de archivos simple

Hola gente!

tengo el siguiente codigo para buscar archivos:

Código PHP:
<?php 
function ordenar($c,$d){
global 
$file_folder;
$c=time() - filemtime($file_folder.'/'.$c);  
$d=time() - filemtime($file_folder.'/'.$d);  
if(
$c==$d) {  
return 
0;
}
return (
$c $d) ? -1;
}

$buscar "Prueba 2.txt";
$file_folder "archivos";
$dir opendir($file_folder);
while (
$file_name readdir ($dir)) {
$fs[]=$file_name;
}
usort($fs,"ordenar");
foreach(
$fs as $file_name){
if (
$file_name != "." && $file_name != "..") {
$count=$count++;
if(
$file_name==$buscar){echo $file_name.'<br>';}
}
}
closedir ($dir);
?>
Como hago para no tener que buscar EXACTAMENTE el nombre del archivo porque aparte me daria un solo resultado. Y tener varios resultados con solo coincidir los nombre por ejemplo:

Si el usuario buscar "manza" los resultados serian por ej:
manzanita verde.txt
manza moto.zip
manzandalanga.cfg
adsmanza
  #2 (permalink)  
Antiguo 07/03/2010, 16:48
Avatar de genuine_carlosV2  
Fecha de Ingreso: noviembre-2008
Ubicación: 127.0.0.1
Mensajes: 296
Antigüedad: 15 años, 5 meses
Puntos: 6
Respuesta: Buscador de archivos simple

Usa strpos con el nombre del archivo para ver si la cadena está dentro del nombre del archivo. Para aumentar las coincidencias, podrías probar con strtoupper y strtolower.

Saludos
__________________
Carlos

Recoger datos es solo el primer paso hacia la sabiduría. Pero compartir información es el primer paso hacia la comunidad. - IBM
  #3 (permalink)  
Antiguo 07/03/2010, 16:56
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Buscador de archivos simple

si vas a buscar en mySql, mejor hacerlo con LIKE, mas potente
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #4 (permalink)  
Antiguo 07/03/2010, 18:08
c0w
 
Fecha de Ingreso: enero-2008
Mensajes: 146
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Buscador de archivos simple

Muchisimas gracias, me ayudo mucho. Pero me trabe de nuevo :P.

Código PHP:
Ver original
  1. <?php
  2. function ordenar($c,$d){
  3. global $file_folder;
  4. $c=time() - filemtime($file_folder.'/'.$c);  
  5. $d=time() - filemtime($file_folder.'/'.$d);  
  6. if($c==$d) {  
  7. return 0;
  8. }
  9. return ($c < $d) ? -1 : 1;
  10. }
  11.  
  12. $buscar = "Prueba 2";
  13. $buscar = strtolower($buscar);
  14. $file_folder = "archivos";
  15.  
  16. $dir = opendir($file_folder);
  17. while ($file_name = readdir ($dir)) {
  18. $fs[]=$file_name;
  19. }
  20. usort($fs,"ordenar");
  21. foreach($fs as $file_name){
  22. if ($file_name != "." && $file_name != "..") {
  23. $count=$count++;
  24. $file_name = strtolower($file_name);
  25. $pos = strpos($file_name, $buscar);
  26. if ($pos === false) {
  27.     echo "La palabra ingresada <b>'$buscar'</b> no fue encontrada en esta secci&oacute;n.";
  28. } else {
  29.     echo "$file_name<br>";
  30. }
  31. }
  32. }
  33. closedir ($dir);
  34. ?>

Que hice mal ahora que no anda? me dice de resultado: "La palabra ingresada 'prueba 2' no fue encontrada en esta sección.prueba 2.txt"

Y en la carpeta tengo 2 archivos, "prueba 1.txt" y "prueba 2.txt" y al final me lo mostro no se porque.

Última edición por c0w; 07/03/2010 a las 18:19
  #5 (permalink)  
Antiguo 07/03/2010, 18:23
c0w
 
Fecha de Ingreso: enero-2008
Mensajes: 146
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Buscador de archivos simple

Solcionado. Pero me trabe otra vez! jaja

Código PHP:
Ver original
  1. <?php
  2. function ordenar($c,$d){
  3. global $file_folder;
  4. $c=time() - filemtime($file_folder.'/'.$c);  
  5. $d=time() - filemtime($file_folder.'/'.$d);  
  6. if($c==$d) {  
  7. return 0;
  8. }
  9. return ($c < $d) ? -1 : 1;
  10. }
  11.  
  12. $buscar = "Prueba 2";
  13. $buscar = strtolower($buscar);
  14. $file_folder = "archivos";
  15.  
  16. $dir = opendir($file_folder);
  17. while ($file_name = readdir ($dir)) {
  18. $fs[]=$file_name;
  19. }
  20. usort($fs,"ordenar");
  21. foreach($fs as $file_name){
  22. if ($file_name != "." && $file_name != "..") {
  23. $count=$count++;
  24. $file_name = strtolower($file_name);
  25. $pos = strpos($file_name, $buscar);
  26. if ($pos === false) {;} else {
  27.     echo "$file_name<br>";
  28. }
  29. }
  30. }
  31. closedir ($dir);
  32. ?>

El problema era que cada archivo que encuentra si no es mostraba: no fue encontrado.

Pero ahora necesito saber como hacer para que si no encuentra nada diga que la busqueda X no tuvo exito.
  #6 (permalink)  
Antiguo 08/03/2010, 10:27
Avatar de genuine_carlosV2  
Fecha de Ingreso: noviembre-2008
Ubicación: 127.0.0.1
Mensajes: 296
Antigüedad: 15 años, 5 meses
Puntos: 6
Respuesta: Buscador de archivos simple

Create una variable de más, por ejemplo:

Código PHP:
<?php
$encontrados 
false;
...
bucle() {
if( 
se_muestra ) {
mostrar();
$encontrados true;
}
}
...
if( 
$encontrados ) echo "Exito";
else echo 
"Nada, amigo";
?>
Saludos
__________________
Carlos

Recoger datos es solo el primer paso hacia la sabiduría. Pero compartir información es el primer paso hacia la comunidad. - IBM
  #7 (permalink)  
Antiguo 08/03/2010, 12:33
c0w
 
Fecha de Ingreso: enero-2008
Mensajes: 146
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Buscador de archivos simple

Lo hice de otra forma pero ahora tengo otro problema :S

Código PHP:
<?php
function listarArchivos($c,$d){
global 
$file_folder;
$c=time() - filemtime($file_folder.'/'.$c);  
$d=time() - filemtime($file_folder.'/'.$d);  
if(
$c==$d) {  
return 
0;
}
return (
$c $d) ? -1;
}

function 
buscarArchivos($file_folder,$buscar,$min_words){
$buscar strtolower($buscar);
$buscar_len strlen($buscar);
if(
$buscar_len<=$min_words){echo "La b&uacute;squeda debe tener m&aacute;s de <strong>$min_words</strong> car&aacute;cteres.";}else{
$dir opendir($file_folder);
while (
$file_name readdir ($dir)) {
$fs[]=$file_name;
$resultados=0;
}
usort($fs,"listarArchivos");
foreach(
$fs as $file_name){
if (
$file_name != "." && $file_name != "..") {
$count=$count++;
if(
$file_name == ''){
$file_part '';
$file_extension '';
$file_size_round '';
}
else{
$file "$file_folder/$file_name";

$path_parts=explode('.',$file_name);
$file_part=substr($file_name,0,strlen($file)-strlen(end($path_parts))-1);

$path explode('.',$file_name);
$file_extension end($path);

$file_name_minus strtolower($file_name);
$file_name_mayus strtoupper($file_name);
$file_size = @filesize($file);
$file_size_mb $file_size/1000000;
$file_size_kb $file_size/1000;
$file_size_round = @round("$file_size_mb").' MB';
if(
$file_size_round=='0 MB'){$file_size_round=@round("$file_size_kb").' KB';}
if(
$file_size_round=='0 KB'){$file_size_round=@round("$file_size").' Bytes';}
$file_mdate = @date("j/n/Y", @filemtime($file));
$file_cdate = @date("j/n/Y", @filectime($file));
}
$pos strpos($file_name_minus$buscar);
if (
$pos === false) {;} else {
$resultados=++$resultados;
echo 
"<strong>$file_part</strong> | $file_size_round<br>";
}
}
}
if(
$resultados==0){echo "La b&uacute;squeda de <strong>$buscar</strong> no obtuvo ning&uacute;n resultado.";}
closedir ($dir);
}
}

$file_folder 'archivos';
buscarArchivos($file_folder,$_GET['buscar'],'2')
?>
- Problema 1: No se pueden unir las funciones "listarArchivos" y "buscarArchivos" asi no tengo que poner la variable $file_folder antes de mostrar la funcion?

- Problema 2: Si tengo un archivo con "." en la carpeta "archivos" tengo que usar estos codigos para sacar la extension y la parte inicial del archivo:

Código PHP:
Ver original
  1. $path_parts=explode('.',$file_name);
  2. $file_part=substr($file_name,0,strlen($file)-strlen(end($path_parts))-1);
  3.  
  4. $path = explode('.',$file_name);
  5. $file_extension = end($path);

PERO ME DA CUALQIER RESULTADO :S EL ARCHIVO CON "." ME DA BIEN LA PRIMERA PARTE PERO NO LA EXTENSION, Y LOS DEMAS ARCHIVOS NI LES SACA EXTENSION NI PRIMERA PARTE DEL NOMBRE.


ME VOY A VOLVER LOCO CON ESTE SCRIPT! :P
Muchas gracias por su atencion..
  #8 (permalink)  
Antiguo 09/03/2010, 11:31
c0w
 
Fecha de Ingreso: enero-2008
Mensajes: 146
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Buscador de archivos simple

ALGUNA AYUDA?

Código PHP:
function buscarArchivos($file_folder,$buscar_r,$min_words){
$buscar $buscar_r;
$buscar_len strlen($buscar);
    
$buscar ereg_replace("\n"''$buscar);
    
$buscar ereg_replace("\t"''$buscar);
    
$buscar str_replace('.'''$buscar);
    
$buscar str_replace('"'''$buscar);
    
$buscar str_replace('\''''$buscar);
    
$buscar str_replace('+'''$buscar);
    
$buscar str_replace(','''$buscar);
    
$buscar str_replace('-'''$buscar);
    
$buscar str_replace('*'''$buscar);
    
$buscar str_replace('/'''$buscar);
    
$buscar str_replace('!'''$buscar);
    
$buscar str_replace('%'''$buscar);
    
$buscar str_replace('>'''$buscar);
    
$buscar str_replace('<'''$buscar);
    
$buscar str_replace('^'''$buscar);
    
$buscar str_replace('('''$buscar);
    
$buscar str_replace(')'''$buscar);
    
$buscar str_replace('['''$buscar);
    
$buscar str_replace(']'''$buscar);
    
$buscar str_replace('{'''$buscar);
    
$buscar str_replace('}'''$buscar);
    
$buscar str_replace('\\'''$buscar);
    
$buscar str_replace('='''$buscar);
    
$buscar str_replace('$'''$buscar);
    
$buscar str_replace('#'''$buscar);
    
$buscar str_replace('?'''$buscar);
    
$buscar str_replace('~'''$buscar);
    
$buscar str_replace(':'''$buscar);
    
$buscar str_replace('_'''$buscar);
    
$buscar str_replace('&amp;'''$buscar);
    
$buscar str_replace('&copy;'''$buscar);
    
$buscar str_replace('&nbsp;'''$buscar);
    
$buscar str_replace('&quot;'''$buscar);
    
$buscar str_replace('&'''$buscar);
    
$buscar str_replace(';'' '$buscar);
if(@
opendir($file_folder)==''){echo "La carpeta <b>$file_folder</b> no existe.";}else{
if(
$buscar_len<=$min_words){echo "La b&uacute;squeda debe tener m&aacute;s de <strong>$min_words</strong> car&aacute;cteres.";}else{
$dir = @opendir($file_folder);
while (
$file_name readdir ($dir)) {
$fs[]=$file_name;
$resultados=0;
}
usort($fs,"listarArchivos");
foreach(
$fs as $file_name){
if (
$file_name != "." && $file_name != "..") {
$count=$count++;
include(
'filedata.php');
$pos stripos($file_name_minus$buscar);
if (
$pos === false) {;} else {
$resultados=++$resultados;
echo 
"<strong>$file_part</strong> | $file_size_round<br>";
}
}
}
if(
$resultados==0){echo "La b&uacute;squeda de <strong>$buscar_r</strong> no obtuvo ning&uacute;n resultado.";}
closedir ($dir);
}
}

Ahora mi problema aparte del anterior, es que si pongo "Archivos" y ai un archivo en la carpeta que se llama "Archivo" no lo encuentra... Como mejoro mi buscador?

Etiquetas: simple, buscadores
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 20:13.