Foros del Web » Programando para Internet » PHP »

Obtener datos de archivo txt.

Estas en el tema de Obtener datos de archivo txt. en el foro de PHP en Foros del Web. Tengo la sgte estructura en archivos txt, por ejemplo aqui son dos registros diferentes y lo unico que los separa son espacios en blanco de ...
  #1 (permalink)  
Antiguo 13/08/2004, 15:56
 
Fecha de Ingreso: agosto-2004
Mensajes: 44
Antigüedad: 13 años, 4 meses
Puntos: 0
Obtener datos de archivo txt.

Tengo la sgte estructura en archivos txt, por ejemplo aqui son dos registros diferentes y lo unico que los separa son espacios en blanco de uno al otro, como puedo hacer para que un script php lea ese archivo y obtenga los datos que vienen despues de los :(dos puntos) y luego los grabe en una tabla relacional. Para mi seria mas facil que esa data viniera como registros y yo leer linea a linea esa data.
Alguna sugerencia?

Código:
EEEEEEEEE1                 OOOOO OO OOOOOOOO            campocamp:    2066419
LLLLLL                                                  campocamp:   70196242
campocamp                                                 campocamp: 01-08-2004
                                                        campocamp: 31-07-2004
campo: 99999-BOGOTA              campo :SS-SSSSSSSSS SSSSSSSS S.A.(SSSSSS)
-------------------------------------------------------------------------------
                        D A T O S    G E N E R A L E S 
-------------------------------------------------------------------------------
Servicio   :campocampocampocampocampo   Promocion    :campo
Inscripcion:campocampo                  F. Solicitud : campo
Telefono   :campocampocampo             Clasificacion:campo 
Apellidos  :campocampo                  Nombres      :campo              
DNI        :campocampo                  Telf. Refer. :campo


         __________________                 ____/____/____
         Firma del Cliente             Fecha Puesta en Servicio





EEEEEEEEE2                 OOOOO OO OOOOOOOO            campocamp:    2066418
LLLLLL                                                  campocamp:   70196243
campocamp                                                 campocamp: 01-08-2004
                                                        campocamp: 31-07-2004
campo: 99999-BOGOTA              campo :SS-SSSSSSSSS SSSSSSSS S.A.(SSSSSS)
-------------------------------------------------------------------------------
                        D A T O S    G E N E R A L E S 
-------------------------------------------------------------------------------
Servicio   :campocampocampocampocampo   Promocion    :campo
Inscripcion:campocampo                  F. Solicitud : campo
Telefono   :campocampocampo             Clasificacion:campo 
Apellidos  :campocampo                  Nombres      :campo              
DNI        :campocampo                  Telf. Refer. :campo


         __________________                 ____/____/____
         Firma del Cliente             Fecha Puesta en Servicio
__________________
SEGUIR CON LO BUENO, MEJORAR LO QUE SE DEBA Y CREAR LO QUE SE PUEDA.
  #2 (permalink)  
Antiguo 13/08/2004, 21:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno .. tendrás que primeramente leer el archivo .. Por la estructura que tiene te vendría bien usar file() para obtener un elemento por línea (\n salto de línea de ese texto plano) en un array.

Ahí obtendras por ejemplo:

$linea[?]="Servicio :campocampocampocampocampo Promocion :campo"

(lo leeras con un bucle foreach() por ejemplo línea a línea)

Despues .. para procesar esa cadena .. lo ideal sería usar expresiones regulares para identificar tu "patron" a buscar ..

No sé si los valores de esos "campos" pueden o no llevar espacios .. Es importante definir ese detalle por qué si los tiene se puede complicar bastante la expresión regular .. También es necesario conocer si esos nombres de "variables" (servicio, promocion, etc...) son fijos. (si son fijos .. mejor se podrá "parsear").

Un saludo,
  #3 (permalink)  
Antiguo 14/08/2004, 11:48
 
Fecha de Ingreso: agosto-2004
Mensajes: 44
Antigüedad: 13 años, 4 meses
Puntos: 0
Los valores de los campos pueden llevar espacios en blanco, por ese lado me comentas que el usar expresiones regulares complica el asunto, ok, que expresion regular podrias aplicar en este caso. Y de que manera aplicarias un parse ya que el nombre que representan a los campos siempre sera el mismo por ejemplo Telefono, Orden, Direccion,...
Una ultima duda es realmente factible de hacer esto ya que de mi parte lo voy harto complicado. Como veras en el ejemplo de la data q te mande en un solo archivo me pueden venir de 400 a 500 ordenes diferentes (en mi ejemplo puse solo 2), el procesamiento de esto no haria lento mi servidor o la performance de la aplicacion.
De antemano agradezco la atencion prestada.
__________________
SEGUIR CON LO BUENO, MEJORAR LO QUE SE DEBA Y CREAR LO QUE SE PUEDA.
  #4 (permalink)  
Antiguo 14/08/2004, 17:18
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues si, .. "parsear" aplicando expresiones regulares un archivo de texto plano de esas características va a consumir bastantes recursos del servidor y más si hay muchos de esos .txt que "parsear".

Si tienes alguna forma de que la aplicación que genera esos archivos pueda generar una versión en CVS sería lo ideal.

La expresión regular a aplicar .. no te sabría decir (no es mi fuerte) .. sólo te puedo recomendar algún tutorial al respecto para que lo veas tu mismo. Las expresiones regulares PHP te "ofrece" usarlas .. pero no es própio de PHP como lenguaje.

Un manual de expresiones regulares aplicado a PHP:
http://www.ignside.net/man/php/regex.php

Un saludo,
  #5 (permalink)  
Antiguo 16/08/2004, 08:22
 
Fecha de Ingreso: agosto-2004
Mensajes: 44
Antigüedad: 13 años, 4 meses
Puntos: 0
hum por ahi revisando, me parece generar un archivo usando perl por ahi como q su fuerte son expresiones regulares y ya luego desde mi php leer este txt y pasarlo a mi bd, te parece una idea razonable?
__________________
SEGUIR CON LO BUENO, MEJORAR LO QUE SE DEBA Y CREAR LO QUE SE PUEDA.
  #6 (permalink)  
Antiguo 16/08/2004, 08:52
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno .. las expresiones regulares igualmente puedes emplearlas (las mismas que en Perl) bajo PHP ..

El caso te proponía es que si hay alguna posibilidad de desarrollar en el otro sistema alguna cosa para que te entregen los datos en CVS o similar .. ?

Un saludo,
  #7 (permalink)  
Antiguo 16/08/2004, 10:31
 
Fecha de Ingreso: agosto-2004
Mensajes: 44
Antigüedad: 13 años, 4 meses
Puntos: 0
creo que no sera posible la facilidad de que me brinden ese archivo en cvs de todas maneras agradezco tu atencion y solo se que voy a lidiar una dura lucha para transformar ese archivo al formato q deseo y pasarlo a mi tabla relacional.
__________________
SEGUIR CON LO BUENO, MEJORAR LO QUE SE DEBA Y CREAR LO QUE SE PUEDA.
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 18:22.