Foros del Web » Programando para Internet » PHP »

Espacios en blanco con php

Estas en el tema de Espacios en blanco con php en el foro de PHP en Foros del Web. Hola, estoy intentando generar un archivo de texto, el problema es que necesito generar lineas con determinado número de caracteres, y si el texto que ...
  #1 (permalink)  
Antiguo 03/07/2006, 07:05
 
Fecha de Ingreso: septiembre-2005
Mensajes: 70
Antigüedad: 12 años, 2 meses
Puntos: 0
Espacios en blanco con php

Hola,
estoy intentando generar un archivo de texto, el problema es que necesito generar lineas con determinado número de caracteres, y si el texto que recupero de la base de datos no llega a ese límite, hay que sustituirlo por espacios en blanco, mas concretamente lo que estoy haciendo es un script que me genere un archivo compatible con "el libro 19" de la asociacion de banca española para automatizar los cargos bancarios, y el formato sería:

lineas de recibo comienzan por:
(5680+cif-nuestro+001+cif-cliente) + 40dig.nombre + 20dig.cuenta + 19dig.blanco + 35dig.texto-maximo(para no saltar a otra linea)

No se como determinar que una cadena tenga una longitud concreta y si no llega a esa longitud, rellenarla con espacios en blanco.

Un saludo
  #2 (permalink)  
Antiguo 03/07/2006, 07:08
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 11 años, 5 meses
Puntos: 0
La funcion strlen ($cadena) te permite saber cuantos caracteres tiene una cadena...

tal vez te sirva un:

while (strlen($cadena)<=$longitud) {
$cadena.=" ";
}
  #3 (permalink)  
Antiguo 03/07/2006, 07:43
 
Fecha de Ingreso: septiembre-2005
Mensajes: 70
Antigüedad: 12 años, 2 meses
Puntos: 0
Gracias, voy a probar a ver que tal
  #4 (permalink)  
Antiguo 03/07/2006, 09:18
 
Fecha de Ingreso: junio-2005
Ubicación: Madrid, España
Mensajes: 288
Antigüedad: 12 años, 5 meses
Puntos: 1
puedes usar sprintf, le puedes indicar la longitud de la variable y si la variable no llega al minimo le puedes indicar con que quieres que lo rellene. ejemplo

su formato normal seria sprintf("%s",$variable) esto escribiria $variable

sprintf("%-7s",$variable) esto tendria longitud 7 alineado a la izquierda y el resto relleno con blancos

sprintf("%7s",$variable) seria lo mismo pero alineado a la izquierda

com siempre os dejo el enlace a php.net

http://es2.php.net/manual/es/function.sprintf.php
  #5 (permalink)  
Antiguo 03/07/2006, 10:52
Avatar de ASCENDEDMASTERS  
Fecha de Ingreso: julio-2005
Ubicación: Pergamino, Buenos Aires
Mensajes: 302
Antigüedad: 12 años, 5 meses
Puntos: 1
mirate la funcion str_pad

http://ar2.php.net/manual/es/function.str-pad.php

str_pad

(PHP 4 >= 4.0.1, PHP 5)
str_pad -- Rellena una cadena con otra hasta una longitud dada
Descripción
string str_pad ( string cadena_original, int longitud_relleno [, string cadena_relleno [, int tipo_relleno]] )

Esta función rellena la cadena cadena_original por la derecha, la izquierda o por ambos lados hasta la longitud indicada. Si no se especifica el argumento opcional cadena_relleno, la cadena_original se rellena con espacios. En caso contrario, será rellenada con los caracteres de cadena_relleno hasta el límite.

El argumento opcional tipo_relleno puede valer STR_PAD_RIGHT, STR_PAD_LEFT o STR_PAD_BOTH. Si no se especifica, se asume que vale STR_PAD_RIGHT.

Si el valor de longitud_relleno es negativo o menor que la longitud de la cadena original, no se produce rellenado alguno.

Ejemplo 1. Ejemplo de str_pad()
Código PHP:
<?php
$cadena_original 
"Alien";
print 
str_pad($cadena_original10);                      // produce "Alien    "
print str_pad($cadena_original10"-="STR_PAD_LEFT);  // produce "-=-=-Alien"
print str_pad($cadena_original10"_"STR_PAD_BOTH);  // produce "__Alien___"
echo str_pad($cadena_original"___");                // produce "Alien_"
?>
Nota: La cadena cadena_relleno puede ser truncada si el número de caracteres de relleno que se necesitan no es multiplo entero de la longitud de cadena_relleno.
__________________
Dios es la unica fuente de todo bien.
  #6 (permalink)  
Antiguo 03/07/2006, 10:56
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 11 años, 5 meses
Puntos: 0
Cierto, olvidé el str_pad. Mu weno.
  #7 (permalink)  
Antiguo 03/07/2006, 12:08
 
Fecha de Ingreso: septiembre-2005
Mensajes: 70
Antigüedad: 12 años, 2 meses
Puntos: 0
Muchisimas gracias a todos
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 15:06.