Foros del Web » Programando para Internet » PHP »

Leer archivo de texto plano y procesarlo

Estas en el tema de Leer archivo de texto plano y procesarlo en el foro de PHP en Foros del Web. Hola!! Quisiera me ayudaran con lo siguiente: tengo que recorrer un archivo linea por linea y checar si dentro de esa linea se encuentra una ...
  #1 (permalink)  
Antiguo 09/08/2006, 08:50
 
Fecha de Ingreso: julio-2006
Mensajes: 24
Antigüedad: 18 años, 3 meses
Puntos: 0
Leer archivo de texto plano y procesarlo

Hola!!

Quisiera me ayudaran con lo siguiente:
tengo que recorrer un archivo linea por linea y checar si dentro de esa linea se encuentra una determinada palabra, en caso de que en ese renglon se encuentre dicha palabra, tengo que almacenar toda esa linea en un arreglo.

Gracias y espero me ayuden pronto..
  #2 (permalink)  
Antiguo 09/08/2006, 09:01
Avatar de DarkXNightmare  
Fecha de Ingreso: agosto-2005
Ubicación: Somewhere Over The Rainbo
Mensajes: 181
Antigüedad: 19 años, 3 meses
Puntos: 0
Excelente pregunta >.<!...

la mejor forma es con la función file_get_contents acompañado de explode(). ¿Cómo lo haces? Facil!...
Código PHP:
$file explode("\r\n"file_get_contents("C:\\file.txt"));
$palabra_clave "callate";
$arreglo "";
foreach (
$file as $key)
{
    if (
strpos($key$palabra_clave) !== false)
    {
        
$arreglo .= $key "<br />\r\n";
    }
}
echo 
$arreglo;
?> 
Eso es todo y espero que te sirva...
Atte... DarkXNightmare ;D.
__________________
Cambiando mi Web... sean pacientes :P
  #3 (permalink)  
Antiguo 09/08/2006, 09:16
 
Fecha de Ingreso: julio-2006
Mensajes: 24
Antigüedad: 18 años, 3 meses
Puntos: 0
gracias por tu respuesta, creo q es mu buena opcion

Lo que pasa es que los archivos con los cuales trabajo son algo grandes y con la funcion file_get_contents, pues creo q seria mucho para la memoria.
Yo estoy trabajando en linux y he pensado en la posibilidad de usar el comando grep he leido un poco y creo que seria buena opcion, pero no se como implementarlo en php... no se si me puedas decir como usarlo y que piensas de mi idea??
  #4 (permalink)  
Antiguo 09/08/2006, 09:25
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
Iniciado por arecusa Ver Mensaje
gracias por tu respuesta, creo q es mu buena opcion

Lo que pasa es que los archivos con los cuales trabajo son algo grandes y con la funcion file_get_contents, pues creo q seria mucho para la memoria.
Yo estoy trabajando en linux y he pensado en la posibilidad de usar el comando grep he leido un poco y creo que seria buena opcion, pero no se como implementarlo en php... no se si me puedas decir como usarlo y que piensas de mi idea??
En PHP la ejecución de comandos a la "shell" sería con funciones exec() .. system() o afines.

www.php.net/exec

Es cierto que un proceso como el que mencionas no es lo más ideal procesarlo con funcione de PHP .. pues PHP es un lenguaje "interpretado" .. y tiene bastantes limitaciones a la hora de ejecutar un script: por tiempo, por recursos de memoria consumidos .. etc.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 09/08/2006, 09:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Tambien puedes usar fopen, y fread, y fclose para buscar linea linea, y asi quitarte tantas restricciones.
  #6 (permalink)  
Antiguo 09/08/2006, 09:32
Avatar de DarkXNightmare  
Fecha de Ingreso: agosto-2005
Ubicación: Somewhere Over The Rainbo
Mensajes: 181
Antigüedad: 19 años, 3 meses
Puntos: 0
Eeee... grep? Esa no es una función de PHP que yo sepa O_O! Es de Linux? No trabajo con Linux >.<! Pero creeme... el Script que te pasé es la mejor opción para recorrer un archivo... una mejor opción sería crear una función... la voy a crear y la voy a postear para que ahorres codigo pero si el archivo es grande, no se puede hacer nada más...
Atte... DarkXNightmare ;D.
__________________
Cambiando mi Web... sean pacientes :P
  #7 (permalink)  
Antiguo 09/08/2006, 09:37
Avatar de DarkXNightmare  
Fecha de Ingreso: agosto-2005
Ubicación: Somewhere Over The Rainbo
Mensajes: 181
Antigüedad: 19 años, 3 meses
Puntos: 0
Código PHP:
function search_in_file($file_to_check$keyword)
{
    
$file explode("\r\n"file_get_contents($file_to_check));
    
$palabra_clave $keyword;
    
$arreglo "";
    foreach (
$file as $key)
    {
        if (
strpos($key$palabra_clave) !== false)
        {
            
$arreglo .= $key "<br />\r\n";
        }
    }
    return 
$arreglo;

Eso es todo lo que te puedo ayudar y disculpa por no poderte contestar la respuesta como lo querías...
Atte... DarkXNightmare
__________________
Cambiando mi Web... sean pacientes :P
  #8 (permalink)  
Antiguo 09/08/2006, 09:41
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
Iniciado por DarkXNightmare Ver Mensaje
Eeee... grep? Esa no es una función de PHP que yo sepa O_O! Es de Linux? No trabajo con Linux >.<! Pero creeme... el Script que te pasé es la mejor opción para recorrer un archivo... una mejor opción sería crear una función... la voy a crear y la voy a postear para que ahorres codigo pero si el archivo es grande, no se puede hacer nada más...
Atte... DarkXNightmare ;D.
Si el problema no es que no funcine tu propuesta .. sino de "rendimiento" de ese código interpretado por PHP vs a ejecución de comando Shell del S.O. que uses o aplicación externa a PHP .. ese es el "detalle".

Los comandos "shell" los puedes ejecuctar con las funciones de PHP que antes mencioné .. tu puedes mandar un "dir" por ejemplo .. o comando que quieras con PHP y obtener su "salida" en un parámetro/variable de esas funciones para seguir trabajando tu proceso en PHP "transparente" para el usuario (es tu script el que ejecuta el comando bajo el usuario que use PHP en ese sistema).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 09/08/2006, 09:44
Avatar de DarkXNightmare  
Fecha de Ingreso: agosto-2005
Ubicación: Somewhere Over The Rainbo
Mensajes: 181
Antigüedad: 19 años, 3 meses
Puntos: 0
Mmm... disculpa que lo postee aquí pero... y si creas una aplicación Visual Basic? >.<! Sería más facil creo yo :P.
__________________
Cambiando mi Web... sean pacientes :P
  #10 (permalink)  
Antiguo 09/08/2006, 09:53
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
Iniciado por DarkXNightmare Ver Mensaje
Mmm... disculpa que lo postee aquí pero... y si creas una aplicación Visual Basic? >.<! Sería más facil creo yo :P.
Tienes toda la razón ..

Es decir .. no es necesario que sea en "Visual Basic" (y más si usa Linux en sus servidores) .. pero podría ser en C y la mandas a ejecutar con PHP si es que requieres el dato en tu aplicación "web"

Si realmente no se trata de tomar ese dato con tu "aplicación web" .. vale la pena que desarrolles tu aplicación con algún lenguaje de "escritorio" (C, VB, etc ...)

Hay que conocer bastante bien que es "PHP" y su orientación para atacar un problema .. por eso existen "tantos" lenguajes .. cada uno es para lo que es.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 09/08/2006, 10:15
 
Fecha de Ingreso: julio-2006
Mensajes: 24
Antigüedad: 18 años, 3 meses
Puntos: 0
graxias por sus respuestas ahora ya tengo un mejor panorama y muy buenas ideas para resolver esto, bye
  #12 (permalink)  
Antiguo 09/08/2006, 12:59
 
Fecha de Ingreso: julio-2006
Mensajes: 24
Antigüedad: 18 años, 3 meses
Puntos: 0
hola amigos, pues aki de nuevo molestando jeje
mas o menos intento hacer esto :

$archivo = "/var/www/default/dokeos/document.inc.php";
$cadena = "Nombre";
$result= system ('grep' $cadena $archivo);
echo $result;

pero no me resulta me aparece este error:
parse error, unexpected T_VARIABLE in /var/www/default/dokeos/proyecto.php on line 23ca el sig error:
  #13 (permalink)  
Antiguo 09/08/2006, 13:02
Avatar de DarkXNightmare  
Fecha de Ingreso: agosto-2005
Ubicación: Somewhere Over The Rainbo
Mensajes: 181
Antigüedad: 19 años, 3 meses
Puntos: 0
$result= system ("grep $cadena $archivo");
Creo que te faltan los " " :P.
__________________
Cambiando mi Web... sean pacientes :P
  #14 (permalink)  
Antiguo 09/08/2006, 13:07
 
Fecha de Ingreso: julio-2006
Mensajes: 24
Antigüedad: 18 años, 3 meses
Puntos: 0
si ya lo tengo, graxias, oie por cierto para convertir la variable en un vector pero si usar la funcion explode, no se haya alguna otra forma de hacerlo??
  #15 (permalink)  
Antiguo 09/08/2006, 13:12
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
SI hablas de crear un vector (array) .. lo que haces es tomar en cuenta un "separador" .. Si no lo haces con explode() lo tendrías que hacer a mano con un bucle que recorra tu "string" y genere elementos en un array ... todo esto ya lo hace explode() ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #16 (permalink)  
Antiguo 09/08/2006, 13:30
 
Fecha de Ingreso: julio-2006
Mensajes: 24
Antigüedad: 18 años, 3 meses
Puntos: 0
okas graxias, creo q usare explode, graxias
  #17 (permalink)  
Antiguo 30/12/2006, 22:33
Avatar de xyyy7  
Fecha de Ingreso: enero-2004
Ubicación: Maracay.-
Mensajes: 637
Antigüedad: 20 años, 9 meses
Puntos: 5
Re: Leer archivo de texto plano y procesarlo

Cita:
Iniciado por DarkXNightmare Ver Mensaje
Código PHP:
function search_in_file($file_to_check$keyword)
{
$file explode("\r\n"file_get_contents($file_to_check));
$palabra_clave $keyword;
$arreglo "";
foreach (
$file as $key)
{
if (
strpos($key$palabra_clave) !== false)
{
$arreglo .= $key "<br />\r\n";
}
}
return 
$arreglo;

Eso es todo lo que te puedo ayudar y disculpa por no poderte contestar la respuesta como lo querías...
Atte... DarkXNightmare
Muy Interesante este post..... ..Bueno en continuación

Archivo con textos en donde se encuentran 7 viñetas en su lectura
Cita:
[...] ...TODO ESTO ES TEXTO QUE SE ENCUENTRA ANTES DE LA PRIMERA VIÑETA...
<UL>
Texto que se encuentra en esta en esta primera viñeta
</UL>
<UL>
Texto que se encuentra en esta en esta segunda viñeta
</UL>
<UL>
Texto que se encuentra en... (3)
</UL>
<UL>
Texto que se encuentra en... (4)
</UL>
<UL>
Texto que se encuentra en... (5)
</UL>
<UL>
Texto que se encuentra en... (6)
</UL>
<UL>
Texto que se encuentra en... (7)
</UL>
[...]....TEXTO QUE CONTINUA DEL DOCUMENTO...
Lo que ando buscando es que sin importar la cantidad "x" de viñetas que se encuentren en un archivo, la función php que aplique para esto siempre funcione.-

Cita:
//Resultados.-
Texto que se encuentra en esta en esta primera viñeta
Texto que se encuentra en esta en esta segunda viñeta
Texto que se encuentra en... (3)
Texto que se encuentra en... (4)
Texto que se encuentra en... (5)
Texto que se encuentra en... (6)
Texto que se encuentra en... (7)
Esta SOLUCIÓN que dio DarkXNightmare realmente la encuentro muy adecuada para lo que ando buscando, pero ahora no se como salir del resultados que de la coincidencia en la lectura de las líneas, ...para entrar "entre contenidos <UL> y </ul>", se que podría usar la función file_get_contents y un explode arreglado de esta manera pero hasta allí me quedo, no se como combinarlo con la función de DarkXNightmare.-

Código PHP:
$Entrada=explode("<UL>",$Incognita);
$Entrada=explode("</ul>",$Entrada[1]);
$Texto_Optenido=$Texto_Optenido[0]; 
Ahora bien...
según la opinión de cluster al parecer esta aplicación sugerida por DarkXNightmare podría ser una GUILLOTINA para el servidor (vale resaltar que estoy usando hosting pago.-) pero cualquier ayuda que me puedan prestar se les agradece.-

Saludos.-
__________________
Maracay Edo Aragua - Venezuela :
Mi Favorita :
http://www.MySQL.Com

Última edición por xyyy7; 30/12/2006 a las 22:43
  #18 (permalink)  
Antiguo 01/01/2007, 21:45
Avatar de xyyy7  
Fecha de Ingreso: enero-2004
Ubicación: Maracay.-
Mensajes: 637
Antigüedad: 20 años, 9 meses
Puntos: 5
Re: Leer archivo de texto plano y procesarlo

..Una ayudita por favor
__________________
Maracay Edo Aragua - Venezuela :
Mi Favorita :
http://www.MySQL.Com
  #19 (permalink)  
Antiguo 03/01/2007, 01:21
Avatar de xyyy7  
Fecha de Ingreso: enero-2004
Ubicación: Maracay.-
Mensajes: 637
Antigüedad: 20 años, 9 meses
Puntos: 5
Re: Leer archivo de texto plano y procesarlo

Addionalmente,
Queria mencionar que esta aplicacion php es para salir del servidor donde esta alojado, para leer otro archivo en un server diferente.-

Saludos.-
__________________
Maracay Edo Aragua - Venezuela :
Mi Favorita :
http://www.MySQL.Com
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 14:09.