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.
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.
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
0