PHP - Capturar partes de un archivo txt

 
Vista:

Capturar partes de un archivo txt

Publicado por Ronald (3 intervenciones) el 03/06/2013 22:42:22
Estoy queriendo realizar una pequeña aplicación en php la cual analizaría un determinado archivo de texto plano para luego insertarlo a una BD. El inconveniente que tengo es a la hora de capturar los datos que tienen el siguiente formato.

Cod...Lote.....Tip..Deno/Obs..............................Empresa...............Pais...Cant....Doc.....Referencia
998....9..........A......Teclado./.USB......................Consultronic.........US......9..........XX........9999999...
................................3.0...........................................................................................................................
998....9..........A......Nombre.................................Productos.de........US.....9..........XX........9999999...
................................................................................Informatica S.A.....................................................................

Si toda la información estuviera en una sola linea utilizaría esta función que encontré para capturar carácteres contenidos entre $inicio y $fin.

1
2
3
4
5
6
7
8
function obtenerCadena($contenido,$inicio,$fin){
    $r = explode($inicio, $contenido);
    if (isset($r[1])){
        $r = explode($fin, $r[1]);
        return $r[0];
    }
    return '';
}


Pero como podría capturar los caracteres "3.0" de la segunda linea para completar el valor "Teclado / USB 3.0" de la 1ra linea de datos.

En el segundo caso tengo que capturar "Informatica S.A." de la 4ta linea para completar el valor "Productos de Informatica S.A."

La idea que tuve a principio fue determinar la cantidad de espacios para saber a que columna correspondía ese valor. Por ejemplo para "3.0" tengo 33 espacios que corresponde al inicio de la columna Deno/Obs y para el valor "Informatica S.A." tengo 81 espacios que corresponde a la columna Empresa. Además de esto, no tengo idea de como concatenar esos valores.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Capturar partes de un archivo txt

Publicado por xve (6935 intervenciones) el 04/06/2013 07:08:24
Hola Ronald, en la segunda linea, al no tener ninguna referencia, lo unico que se me ocurre, es que cuentes los puntos que hay delante de un carácter, para saber debajo de que posición va.

Coméntanos si te puede servir de esta manera...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Capturar partes de un archivo txt

Publicado por Ronald (3 intervenciones) el 06/06/2013 17:05:40
XVE, toda ayuda es bienvenida. Estuve averiguando mas sobre la estructura del archivo y el tamaño de las columnas son fijas. A medida que los datos de dicha columna sobrepasan el ancho de la misma, salta a la línea siguiente. Tengo casos donde aparecen asi:

Cod...Lote.....Tip..Deno/Obs..............................Empresa...............Pais...Cant....Doc.....Referencia
998....9..........A......Teclado./.USB......................Consultronic.........US......9..........XX........9999999...
................................3.0...................................................................................................................................
988....9..........A......Monitor AOC..........................Productos.de........US.....9..........XX........9999999....
................................17 " con..................................informática y.................................................................
................................adaptador..............................proveedora....................................................................
................................HDMI.......................................de insumos..................................................................

El archivo original tiene algunos caracteres como FF, que sería comandos de impresión. Me hace pensar que en vez de haber salido por la impresora volcaron a un TXT, la razón por los caracteres FF.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Capturar partes de un archivo txt

Publicado por Ronald (3 intervenciones) el 07/06/2013 19:46:00
Mirando un poco el archivo me surgió otra idea para asociar las lineas inferiores.

Cod...Lote.....Tip..Deno/Obs..............................Empresa...............Pais...Cant....Doc.....Referencia
998....9..........A......Teclado./.USB......................Consultronic.........US......9..........XX........9999999...
................................3.0...................................................................................................................................
988....9..........A......Monitor AOC..........................Productos.de........US.....9..........XX........9999999....
................................17 " con..................................informática y.................................................................
................................adaptador..............................proveedora....................................................................
................................HDMI.......................................de insumos..................................................................

Suponiendo que "17" con" empieza en la columna 33 lo concateno con la linea superior. Lo mismo con "adaptador" que empieza en la columna 33 lo concateno con "17" con" y asi sucesivamente hasta encontrar algún caracter en la columna de COD. Para los valores que están en la columna EMPRESA hago el mismo procedimiento de concatenación. Como las funciones que trabajan con caracteres lo hacen linea por línea, el proceso de concatenación sería linea por línea también.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar