entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Leer espacios en blanco de un txt con PHP

Buenos dias, tengo una dudilla rápida que no logro encontrar por internet fácilmente. Resulta que tengo una aplicación, a la que envio un fichero de texto que contiene recibos devueltos del banco con numeros, nombres y espacios en blanco para delimitar el contenido de cada campo, todo seguido y en cada linea un recibo devuelto por el cliente.

Abro el fichero y lo leo y saco todos los datos, pero solo me interesa coger ciertos datos, por ejemplo:

  • en la posicion 11 a la 45 sale el nombre del cliente, si el cliente no tiene un nombre tan largo, los huecos restantes se rellenan con espacios en blanco.

A la hora de recoger el nombre hago un substring, para coger del 11 al 45, pues bien, me viene el nombre y mas datos que se me cuelan, ya que al leer el fichero en php, este me borra todos los huecos en blanco que hay entre medias.

¿Hay alguna manera de que al leer el fichero no me coma los espacios en blanco?

He probado con fopen() y con file:get_content() pero nada

Gracias de antemano

2 Respuestas

3votos

cobasESP Puntos19650

Hola @magarzon , gracias por tu respuesta, indagando durante la mañana he conseguido hacerlo.

  • Abro el fichero con fopen('fichero.txt', 'r');

  • Leo cada linea con fgets().

  • Uso la etiqueta <pre> para que no me toque nada de lo que viene.
$linea = '<pre>'.fgets($fp).'</pre>';

Ya me sale todo bien y el substring() ahora si me saca todo bien.

1voto

Peter comentado

Gracias por compartir la solución.

3votos

magarzon Puntos30650

Ni fopen ni file:get_content() cortan los espacios, así que el problema está en cómo lees la línea y/o haces el substring. Se me ocurren dos opciones:

  1. Que estés usando mal la función substr y en el tercer parámetro estés poniendo 45, cuando en realidad es la longitud del campo, n el final del "corte". Es decir, tendrías que poner $nombre = substr($linea, 10, 35)
  2. Que el fichero contenga tabuladores en lugar de espacios, aunque en ese caso se vería claramente, porque fgets te devuelve los tabuladores como \t

Si nos puedes poner el código entero de cómo lees y parseas el fichero, mejor.

Saludos.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta