Foros del Web » Programando para Internet » PHP »

Extraer ciertos datos de un TXT

Estas en el tema de Extraer ciertos datos de un TXT en el foro de PHP en Foros del Web. Tengo una cuestión con un archivo de texto, no me ha tocado trabajar mucho con ellos Lo que necesito tal vez sea algo así Tomar ...
  #1 (permalink)  
Antiguo 26/07/2011, 13:04
 
Fecha de Ingreso: noviembre-2007
Mensajes: 25
Antigüedad: 17 años
Puntos: 1
Información Extraer ciertos datos de un TXT

Tengo una cuestión con un archivo de texto, no me ha tocado trabajar mucho con ellos

Lo que necesito tal vez sea algo así

Tomar el archivo de texto "archivo.txt" y meterlo a una variable
despues de esto identificar a partir de la linea 21 en el caracter 28 el texto "E/C" si se encuentra ese texto entonces necesitaria extraer de la linea 23 el texto de los caracteres del 139 hasta el 145 de esa linea 23 entonces después de esto seguir leyento en la linea 25 para volver a identificar si en el caracter 28 se encuentra el texto "E/C" y así sucesivamente hasta llegar a la linea -26, llegando a esa línea necesito leer la linea -22 y guardar en una variable los caracteres 38 hasta que encuentre un " .00 "

no se si me explique...

pondre un ejemplo del .TXT

Cita:
****************** ****************** ****************** ****************** ****************** V 3.3.



Período de Proceso: ********** Fecha de Proceso **********
Registro Patronal: ******** RFC: ********** Area Geográfica: B Página: 1

Nombre o Razón Social: *********************** Delegación **** ****** **
Actividad: AGRICOLA SubDelegación ****: **********1

Domicilio: ************** Pob., Mun. / Deleg.D.F.: **********
Código Postal: ***** Entidad ****** ****************** ******************

****************** N O M B R EE n f e r m e d a d e s y M a t e r n i d a dRFC/CURP CLAVE DE UBICACIÓN


Clave Fecha Días SDI Inc Aus C.F.Exc.Pat Exc. O P.D. PaP.D. ObG.M.P. P G.M.P. O R.T. I.V. Pa I.V. O G.P.S. PatronaS U M A SObreraSubTota


*************** ****************** ******************

ISM 01/01/20 31 378.30 0.00 0.00 27.32 9.76 40.99 14.64 19.52 68.31 24.40 39.04 573.48 48.80 622.28

*************** ****************** ******************

ISM 01/01/20 31 378.30 0.00 0.00 27.32 9.76 40.99 14.64 19.52 68.31 24.40 39.04 573.48 48.80 622.28

*************** E/C ****************** CUGJ-570911-

ISM 01/01/20 31 378.30 0.00 0.00 17.86 6.38 26.80 9.57 12.76 44.66 15.95 25.52 505.90 31.90 537.80

*************** ****************** ******************

ISM 01/01/20 31 378.30 29.07 10.57 57.44 20.52 86.17 30.77 41.03 143.61 51.29 82.06 817.68 113.15 930.83

*************** ****************** ******************

ISM 01/01/20 31 378.30 0.00 0.00 17.86 6.38 26.80 9.57 12.76 44.66 15.95 25.52 505.90 31.90 537.80

*************** ****************** ******************

ISM 01/01/20 31 378.30 76.33 27.75 87.51 31.25 131.27 46.88 62.51 218.78 78.14 125.02 1,079.7 184.021,263.74

*************** E/C ****************** ******************

ISM 01/01/20 31 378.30 0.00 0.00 17.86 6.38 26.80 9.57 12.76 44.66 15.95 25.52 505.90 31.90 537.80

*************** E/C ****************** ******************

ISM 01/01/20 31 378.30 0.00 0.00 17.86 6.38 26.80 9.57 12.76 44.66 15.95 25.52 505.90 31.90 537.80

*************** ****************** ******************

ISM 01/01/20 31 378.30 0.00 0.00 17.86 6.38 26.80 9.57 12.76 44.66 15.95 25.52 505.90 31.90 537.80

279 3,404.70 38.32 103.19 154.78 722.31 412.76 554.27
****************** ****************** 105.40 288.89 433.42 206.38 257.98 5,573.86 6,128.13
****************** ****************** ******************

279 0.00
Total a Pagar: 0,000.00 ****************** : *

****************** ****************** ******************
****************** ******************.
****************** ******************
****************** ****************** ****************** ******************









Para el cálculo del seguro de I.V. se utilizará Total a pagar: x,xxx.xx
Espero puedan ayudarme :)
  #2 (permalink)  
Antiguo 26/07/2011, 16:04
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: Extraer ciertos datos de un TXT

Carga el archivo usando file() que te lo pone en un array donde puedes acceder por lineas.
Para encontrar los caracteres podrías usar talvez stripos() o strstr() (Te recomiendo stripos ya que lo necesitas en un caracter en especifico).

http://php.net/stripos
http://php.net/file
  #3 (permalink)  
Antiguo 26/07/2011, 16:35
 
Fecha de Ingreso: noviembre-2007
Mensajes: 25
Antigüedad: 17 años
Puntos: 1
Respuesta: Extraer ciertos datos de un TXT

no conocia esa función pero habra que estudiarla muchas gracias :)
  #4 (permalink)  
Antiguo 26/07/2011, 16:36
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: Extraer ciertos datos de un TXT

Cita:
Iniciado por juanluis911 Ver Mensaje
no conocia esa función pero habra que estudiarla muchas gracias :)
Recuerda que como la funcion file() te guarda el archivo por linea y los arrays comienzan con el indice 0, la linea 22 seria el indice 21 en tu array devuelto por file().

;)
  #5 (permalink)  
Antiguo 26/07/2011, 17:46
 
Fecha de Ingreso: julio-2011
Mensajes: 220
Antigüedad: 13 años, 3 meses
Puntos: 72
Respuesta: Extraer ciertos datos de un TXT

Bueno, no entendí muy bien la última parte del problema, de todas formas yo tuve una situación parecida (recuperar partes especificas de un archivo de texto), he adaptado un poco el código que empleé para solucionar esto y creo que funcionara en este caso, al menos en parte.

Código PHP:
Ver original
  1. <?php
  2.  
  3. $ar= fopen("ejemplo.txt", "r"); //Se abre el archivo en modo de solo lectura.
  4. $datosRecuperados= array(); //En este array guardaremos los datos.
  5. $contador= 0; //Es para llevar el número de linea que estamos procesando.
  6. $existeEC; //Esta variable se modificara de acuerdo a la presencia o ausencia de 'E/C'.
  7.  
  8. while(!feof($ar)) //El bucle while se repetira hasta llegar al final del archivo.
  9. {
  10. $lineaActual= fgets($ar); //Con fgets() leemos una por una las lineas del archivo pasado por parametro.
  11. $contador++;
  12.  
  13. if($contador>=21 && (($contador-1)%4)==0) //Para verificar que se trata de una linea en la que debemos buscar 'E/C'.
  14. {
  15.     $pos= strpos($lineaActual, "E/C"); //Se busca la posición de  'E/C'.
  16.    
  17.     if($pos==27) //Si 'E/C' se halla en la posición adecuada o no.
  18.         $existeEC= true;
  19.     else
  20.         $existeEC= false;
  21. }
  22.  
  23. if($existeEC && $contador>=23 && (($contador+1)%4)==0) //Se evalua comprueba la presencia de 'E/C' asi como que se trata una linea de la cual de bemos extraer los datos.
  24. {
  25.     $datosRecuperados[]= substr($lineaActual, 138, 6); //Se guardan los datos en el array.
  26. }
  27. }
  28.  
  29. fclose($ar); //Se cierra el archivo de texto.
  30.  
  31. foreach($datosRecuperados as $dato) //Con esto se recorre el array y se imprimen los datos recuperados.
  32.     echo $dato."<br>";
  33.  
  34. ?>

Quiero agregar que se podria detener las iteraciones del bucle while añadiendo algo como esto:

Código PHP:
Ver original
  1. $lineaMaxima= 250;
  2.  
  3. if($contador>=$lineaMaxima)
  4.      break;

De esta manera la busqueda se realizaria hasta un limite dado.

Última edición por lubtufano; 26/07/2011 a las 17:54

Etiquetas: ciertos, registro, txt, variables
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 08:10.