Foros del Web » Programando para Internet » PHP »

Buscador de cadenas en archivos de texto

Estas en el tema de Buscador de cadenas en archivos de texto en el foro de PHP en Foros del Web. Antes que nada un saludo Estoy atorado con la construcción de un buscador, lo que quiero es que busque una cadena dentro de una infinidad ...
  #1 (permalink)  
Antiguo 27/05/2003, 00:45
Avatar de futilidad  
Fecha de Ingreso: julio-2002
Mensajes: 388
Antigüedad: 21 años, 8 meses
Puntos: 0
Buscador de cadenas en archivos de texto

Antes que nada un saludo

Estoy atorado con la construcción de un buscador, lo que quiero es que busque una cadena dentro de una infinidad de archivos de texto planos (todos dentro de un mismo folder) y que estos me los presente en forma de listado con los nombres de ficheros en los que se encontro la cadena.

Mi duda principal es como abro todos los archivos de texto de un mismo folder y los leo todos para buscar una cadena?

ademas de que si esto no consumira muchos recursos?

como hago para recuperar el nombre de los ficheros en los que se encontro la cadena?

La verdad no tengo idea de como transcribir lo anterior a codigo

De antemano les agradesco sus atenciones
  #2 (permalink)  
Antiguo 27/05/2003, 02:56
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba
Mensajes: 36
Antigüedad: 21 años, 2 meses
Puntos: 0
Jolas

Hola

La verdad es que no se realmente como se haria, pero en lo que dices de los recursos, creo que podrías guardar lo mismo que guardas en archivo diferentes en un solo archivo a la vez que escribres estos archivos diferentes y realizar las busquedas sobre este .

Solo una sugerencia, no tengo mucha idea aun del tema .

Un saludo .
__________________
Aprender es duro, no aprender lo es más aún .
  #3 (permalink)  
Antiguo 27/05/2003, 11:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Pues una busqueda así va consumir mucho tiempo de ejecución de tu script que haga ese proceso .. Lo ideal es "indexar" tus archivos.

Indexar es básicamente abrir tus archivos y localizar las palabras clave mas usadas junto con asociarlo al archivo donde estén ...

Hay sistemas de ese tipo ya hechos en:

http://www.hotscripts.com/PHP/Script...earch_Engines/

Por si quieres ir viendo cosas por tu cuenta .. Te recomiendo que leas el manual de php oficial en su capítulo de funciones para menejar directorios y archivos:

http://www.php.net/manual/en/ref.filesystem.php

Hay tienes ejemplos completos para ir leyendo los archivos de un de un directorio .. Y también tienes la función file() (junto con implode() ) para leer un archivo hacia un string (cadena) para que posteriormente puedas aplicar alguna función de busqueda de algún patrón sobre una cadena: desde substr(), str_pos() .. etc .. hasta Expresiones regulares ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 29/05/2003, 19:13
Avatar de futilidad  
Fecha de Ingreso: julio-2002
Mensajes: 388
Antigüedad: 21 años, 8 meses
Puntos: 0
Por ejemplo,
en el sistema que utilizan los foros como se maneja?

se escriben los post en un archivo de texto, o se "meten" dentro de una base de datos como "full text", y de ahi como se realizan las busquedas de cadena.
  #5 (permalink)  
Antiguo 30/05/2003, 13:53
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 9 meses
Puntos: 16
Hola,

Estos foros usan BD. Y creo que no usan directamente full text, sino que crean un indice que relaciona palabras con mensajes para optimizar la busqueda.

Sobre tu busqueda dentro de ficheros, dependiendo del sistema operativo (y el acceso que tengas a el), podrias usar algun comando y recoger su salida. En Linux/Unix creo que el comando que hace lo que dices es grep.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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:36.