Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Ignorar Primera y ultima linea de FICHERO con PHP

Estas en el tema de Ignorar Primera y ultima linea de FICHERO con PHP en el foro de PHP en Foros del Web. Hola comunidad, buen dia, tengo una duda, tengo que leer un archivo .txt con PHP, necesito leer su contenido pero necesito ignorar la primera y ...
  #1 (permalink)  
Antiguo 28/01/2013, 16:33
 
Fecha de Ingreso: agosto-2012
Ubicación: México
Mensajes: 106
Antigüedad: 11 años, 8 meses
Puntos: 6
Pregunta Ignorar Primera y ultima linea de FICHERO con PHP

Hola comunidad, buen dia, tengo una duda, tengo que leer un archivo .txt con PHP, necesito leer su contenido pero necesito ignorar la primera y ultima linea, ya que estas corresponden a la cabecera y el pie del archivo, en si lo que necesito es leer el contenido que comienza apartir de la segunda linea hasta la penulitma, y de cada linea solo leer los dos ultimos campos, estos estan definidos por campos de longitud fija, y tengo alguna idea de como hacer esto con la funcion substr(); de php ... el ejemplo de este archivo seria asi:

Código TXT:
Ver original
  1. header
  2. campo1campo2campo3campo4campo5
  3. campo1campo2campo3campo4campo5
  4. campo1campo2campo3campo4campo5
  5. campo1campo2campo3campo4campo5
  6. footer

Otra cosa es que este archivo lo cree de esta manera:
Código PHP:
Ver original
  1. $f = fopen("cobranza/telmex/layout/$fileName.TXT","ab");
  2. fputs($f,$cadena.chr(10)) or die("no se pudo crear o insertar el fichero");
  3. fclose($f);

y segun yo solo me esta insertando con fin de linea, SIN SALTO DE LINEA, por que asi me lo pidieron, hay que leerlo de una forma especial para que me reconozca cuando termina cada linea del archivo?

Agradezco su ayuda. Saludos!
  #2 (permalink)  
Antiguo 28/01/2013, 16:38
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Ignorar Primera y ultima linea de FICHERO con PHP

Si, básicamente debes iterar carácter por carácter para comprobar las lineas usando el fin de linea como separador, o bien usar explode() para obtener todas las lineas.

Usando explode() es más fácil descartar el primer y último elemento usando array_pop/shift respectivamente.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 28/01/2013, 16:40
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Ignorar Primera y ultima linea de FICHERO con PHP

También podrías usar file, para pasar todas las líneas a un array y usar unset o array_pop/shift como dice @pateketrueke.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #4 (permalink)  
Antiguo 28/01/2013, 16:59
 
Fecha de Ingreso: agosto-2012
Ubicación: México
Mensajes: 106
Antigüedad: 11 años, 8 meses
Puntos: 6
Respuesta: Ignorar Primera y ultima linea de FICHERO con PHP

Cita:
Iniciado por pateketrueke Ver Mensaje
Si, básicamente debes iterar carácter por carácter para comprobar las lineas usando el fin de linea como separador, o bien usar explode() para obtener todas las lineas.

Usando explode() es más fácil descartar el primer y último elemento usando array_pop/shift respectivamente.
Hola amigo, una super molestia, podrias ponerme aunque sea en pseudocodigo como seria eso de array_pop/shift? uu'

Gracias por tu pronta respuesta!
  #5 (permalink)  
Antiguo 28/01/2013, 17:01
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Ignorar Primera y ultima linea de FICHERO con PHP

¿Y si mejor consultas el manual?

Así me ahorro escribir algo así de básico y tu te ahorras la siguiente pregunta.

Es en serio, si vas a usar al foro por cada función que ves no vas a llegar lejos, para eso existe un manual oficial.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 28/01/2013, 17:05
 
Fecha de Ingreso: agosto-2012
Ubicación: México
Mensajes: 106
Antigüedad: 11 años, 8 meses
Puntos: 6
Respuesta: Ignorar Primera y ultima linea de FICHERO con PHP

Cita:
Iniciado por andresdzphp Ver Mensaje
También podrías usar file, para pasar todas las líneas a un array y usar unset o array_pop/shift como dice @pateketrueke.
Estoy leyendo en el manual sobre file() y file_get_contents() da igual usar uno u otro en este caso? ó es mas efectivo usar alguno...

Estoy leyendo también sobre el array_pop/shift pero dice que marca un WARNING para un elmento que no es un array, en este caso es un fichero de texto plano . txt...
y no entiendo como usarlas en mi archivo de texto que intento leer uu'.

Gracias por tu pronta respuesta. Saludos!

---
Amigo ya entendi como! Gracias!

Última edición por art_rockerd; 28/01/2013 a las 17:07 Razón: aclaracion.
  #7 (permalink)  
Antiguo 28/01/2013, 17:07
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Ignorar Primera y ultima linea de FICHERO con PHP

Algo básico:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $f = file('test.txt'); //$f es un array con las líneas del txt
  4.  
  5. array_pop($f); //se quita el último elemento
  6. array_shift($f); //se quita el primer elemento
  7.  
  8. foreach ($f as $l) { //recorremos lo que queda
  9.     echo $l . '<br />';
  10. }
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #8 (permalink)  
Antiguo 28/01/2013, 17:09
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Ignorar Primera y ultima linea de FICHERO con PHP

Cita:
Iniciado por art_rockerd Ver Mensaje
Estoy leyendo en el manual sobre file() y file_get_contents() da igual usar uno u otro en este caso? ó es mas efectivo usar alguno...

Estoy leyendo también sobre el array_pop/shift pero dice que marca un WARNING para un elmento que no es un array, en este caso es un fichero de texto plano . txt...
y no entiendo como usarlas en mi archivo de texto que intento leer uu'.

Gracias por tu pronta respuesta. Saludos!
Ah, bien, al menos ya estás leyendo el manual.

La función file() no es igual a file_get_contents(), la primera devuelve un array y la segunda un string, así dice el manual ¿verdad?

Debes usar una otra dependiendo de lo que necesitas de vuelta, si necesitas un array entonces usa file() si necesitas una cadena entonces file_get_contents() ¿o no tiene sentido?

Ahora lo del WARNING es seguramente porque no has comprendido bien la primer parte, ya que dichas funciones sirven únicamente con arrays y de algún modo le estás pasando una cadena.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 28/01/2013, 17:41
 
Fecha de Ingreso: agosto-2012
Ubicación: México
Mensajes: 106
Antigüedad: 11 años, 8 meses
Puntos: 6
Respuesta: Ignorar Primera y ultima linea de FICHERO con PHP

Cita:
Iniciado por pateketrueke Ver Mensaje
Ah, bien, al menos ya estás leyendo el manual.

La función file() no es igual a file_get_contents(), la primera devuelve un array y la segunda un string, así dice el manual ¿verdad?

Debes usar una otra dependiendo de lo que necesitas de vuelta, si necesitas un array entonces usa file() si necesitas una cadena entonces file_get_contents() ¿o no tiene sentido?

Ahora lo del WARNING es seguramente porque no has comprendido bien la primer parte, ya que dichas funciones sirven únicamente con arrays y de algún modo le estás pasando una cadena.
Asi es, como file() lo que hace es convertir el contenido en array, por eso manda el warning, auque acaban de cambiarme el formato del archivo y ahora tengo que eliminar las cuatro ultimas lineas del archivo jaja. Estoy implementando sus souciones en este momento, en cuanto me quede algo "decente" lo posteo sale? Gracias.

----------
ok lo estoy checando, estoy intentando primero qutar el footer que ahora es de 3 lineas. el código es el sig.

Código PHP:
Ver original
  1. $lineas = file("cobranza/telmex/respuesta/$archivo");
  2.                     //  $lineas = array_pop ($lineas);
  3.                     // Recorre nuestro array, muestra cada linea con su num. de linea
  4.                         foreach ($lineas as $num_linea => $linea) {
  5.                         echo "Linea <b>{$num_linea}</b> : ".($linea)."<br />\n";

El detalle aqui es que cuando le agrego el array_pop a la ecuación, deja de funcionar, alguna idea? Aun asi, lo que yo estaba pensando era como hacer que en lugar que array_pop solo me ignore la ultima linea, me ignorara las ultimas tres, lo coloco tres veces? ajajja, aunque creo que eso no es posible con esta función. Saludos!

Última edición por art_rockerd; 28/01/2013 a las 17:58 Razón: agergar info..

Etiquetas: ficheros, ignorar, lineas
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 02:56.