PHP - problemas con archivos txt

 
Vista:
sin imagen de perfil

problemas con archivos txt

Publicado por enrique83 (4 intervenciones) el 30/09/2016 02:01:16
tengo el siguiente problemas y es que quiero obtener linea a linea y colocarlas en una tabla campo campo según su ubicación y can la cantidad de caracteres, pero solo obtengo una sola linea, y tengo 5 lineasen el documento de texto por lo cual serian 6 filas incluyendo los títulos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?Php
$lineas = file('COSIP.DAT');
$nombre="COSIP.DAT";
$line=count($lineas)+1;
echo'
<table width="2046" >
  <tr>
    <th width="46" scope="col">primercamp</th>
    <th width="102" scope="col">segundo campo</th>
    <th width="44" scope="col">tercer campo</th>
    <th width="39">cuarto campo</th>
    <th width="66">quinto campo</th>

  </tr>

';
$num=0;
 
$f = @fopen($nombre,r) or die("Error al abrir el archivo: $nombre");
 
if(!@feof($f)){
 
echo'<tr>';
@fseek($f, 0); echo '<td>'. @fread($f, 10).'</td>';
 
fseek($f, 8); echo '<td>'. fread($f, 15).'</td>';
 
fseek($f, 12); echo'<td>'. fread($f, 8).'</td>';
 
fseek($f, 16); echo'<td>'. fread($f, 7).'</td>';
 
fseek($f, 19); echo'<td>'. fread($f, 9).'</td>';
echo'</tr>';
 
}
 
 
 
 
fclose($f);
 
?>


agradezco su pronta ayuda.
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 kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

problemas con archivos txt

Publicado por kip (877 intervenciones) el 30/09/2016 02:27:01
Hola, las primeras lineas toman el archivo y almacenan el contenido de cada linea en un array, para eso sirve la funcion file(), si haces eso entonces porque mas abajo haces uso de fopen() otra vez? Ademas aquella funcion es muy diferente a file() aunque con el mismo objetivo leer un archivo, intentalo asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$lineas = file('COSIP.DAT');
$nombre="COSIP.DAT";
$line=count($lineas)+1;
echo'
    <table width="2046" >
    <tr>
    <th width="46" scope="col">primercamp</th>
    <th width="102" scope="col">segundo campo</th>
    <th width="44" scope="col">tercer campo</th>
    <th width="39">cuarto campo</th>
    <th width="66">quinto campo</th>
    </tr>';
foreach ($lineas as $nlinea => $linea) {
    echo "<tr>";
    $campos = explode(' ', $linea);
    for ($i=0, $s=count($campos); $i < $s ; $i++) {
        echo "<td>".trim($campo)."</td>";
    }
    echo "</tr>";
}
 
?>

Si te fijas comence primero iterando la variable $lineas, ya que la funcion file() obtiene todo el contenido y lo almacena en esta variable como un array y cada elemento de este es una linea del archivo.

Luego de empezar a iterar, dentro del bucle foreach transformo en array la variable $linea que seria el valor de la linea del array anterior, entonces una vez hecho aquello de nuevo uso otro bucle para poder iterar este array que contendra el valor de cada campo que separamos anteriormente usando como delimitador el espacio, puedes colocar tu el delimitador que debas usar.

Supongo que deberia funcionarte, nos cuentas si te sirvio.

Saludos
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
sin imagen de perfil

problemas con archivos txt

Publicado por enrique83 (4 intervenciones) el 30/09/2016 04:06:16
Me arroja el siguiente error:
Warning: trim() expects parameter 1 to be string, array given in C:\xampp\htdocs\carpeta\index.php on line 27
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
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

problemas con archivos txt

Publicado por kip (877 intervenciones) el 30/09/2016 04:12:15
Lo siento, olvide colocar la variable $i para que tome el valor del indice en el for!!

Cambia la linea del echo dentro del for por esta:

1
echo "<td>".trim($campo[$i])."</td>";
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
sin imagen de perfil

problemas con archivos txt

Publicado por Miguel (4 intervenciones) el 30/09/2016 05:48:33
gracias por la ayuda me salio todo bien.
pero no es lo que quiero en si... te explico, las linea de texto son estas:

RPB7470 BOG BOG M83 2006062808:502006062808:50 LN 1 11J 1LN - 2006062809:002006062809:10
RPB7471 BOG BOG M83 2006062809:202006062809:20 N 11J 1SN -
SAM8490 CLO CLO M83EICCC 2006062810:002006062809:510002LN 2 OPE11J 1LN - 2006062810:102006062810:20
SAM8490 ADZ ADZ M83EICCC 2006062810:302006062810:300002N 1 11J 1SN - 2006062810:102006062810:20

donde el el primer campo va desde la posicion 0 hasta la 8 que seria igual a :RPB7470 .
el segundo campo posicion 8 a la 12 =BOG
3er campo 12 a 16 = M83,
4to campo 19 al 29 =20060628
5to campo =08:50

y asi susesivamente.
adjuntyo esta la forma en que me quedo... pero como te digo no me muesta la fila sigiuiente que seria : RPB7471
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
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

problemas con archivos txt

Publicado por kip (877 intervenciones) el 01/10/2016 05:19:41
Bueno, crei que querias separarlos usando como delimitador el espacio, ahora bien, en tu caso seria mejor usar la funcion substr(), en ella colocar el string (la linea) y tambien el inicio de la posicion donde quieres que tome el valor de esta y su longitud, basandome en tu ejemplo posteado anteriormente seria algo asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$lineas = file('COSIP.DAT');
$nombre="COSIP.DAT";
$line=count($lineas)+1;
echo'
    <table width="2046" >
    <tr>
    <th width="46" scope="col">primercamp</th>
    <th width="102" scope="col">segundo campo</th>
    <th width="44" scope="col">tercer campo</th>
    <th width="39">cuarto campo</th>
    <th width="66">quinto campo</th>
    </tr>';
foreach ($lineas as $nlinea => $linea) {
    echo "<tr>";
    echo "<td>".substr($linea, 0, 8)."</td>";
    echo "<td>".substr($linea, 8, 4)."</td>";
    echo "<td>".substr($linea, 12, 4)."</td>";
    echo "<td>".substr($linea, 19, 10)."</td>";
    echo "<td>".substr($linea, 29)."</td>";
    echo "</tr>";
}
?>

Modificalo a tu necesidad, recuerda que el primer numero despues del string que le das a la funcion substr() es la posicion de donde quieres empezar a tomar el valor de este string y el otro es la longitud a la que quieres limitar este.

Espero esta sea la solucion, nos cuentas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

problemas con archivos txt

Publicado por Miguel (4 intervenciones) el 01/10/2016 10:59:11
funciono mi hermano gracias por tu ayuda.. de verdad te lo agradezco mucho, funciono a la perfección. de nuevo muchas gracias.
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