Hace un tiempo me vi en el problema de crear con PHP uno de esos archivos de reporte, en texto, que tienen "n cantidad de caracteres" para cada registro. Ya saben, esos del estilo:
xxxxxx|yyyyy|mmmmm
Ese tipo de reportes o archivos son muy usados por esquemas bancarios, sistemas de reportes, etc. Lo molesto es tener un string de 3 caracteres y que deba ocupar 15, los caracteres en blanco deben ser *. Algo que resulte en:
************xxx
Eso es molesto de hacer, por suerte encontré una función de PHP, muy útil y simple que ya lo hace:
Código :
$str = "xxx"; $char = "*"; echo str_pad($str, 15,$char); // Produce: xxx************
Casi con eso, pero además nos permite controlar el reemplazo, en este caso hacia el otro lado:
Código :
$str = "xxx"; $char = "*"; echo str_pad($str, 15,$char,STR_PAD_LEFT); // Produce: ************xxx
Tenemos entonces la función:
Código :
str_pad(cadena_texto,cantidad_caracteres,default_blank,default_right)
Finalmente debemos saber que podemos alinear a la izquierda (STR_PAD_LEFT) o ambos lados (STR_PAD_BOTH).
¡Espero les sea de utilidad!
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por Inyaka el 08 de Julio de 2010
Por DevCH el 09 de Julio de 2010
Por Dantelox el 09 de Julio de 2010
Por Hernán el 09 de Julio de 2010
Esto se soluciona por muchos con un if, pero con esto solo haces:
Código :
Saludos, Hernán . -
Por Enrique Muñoz el 09 de Julio de 2010
Pero MUY IMPORTANTE, recomiendo la utilización de esto combiando con substr, me explico:
str_pad(substr($cadena, 0, 10), 10,"0");
Es MUCHO más potente porque si la cadena supera los 10 caracteres, el TXT saldrá perfecto.
Si no se utiliza esto, alguna columna podría desbordar generando un GRAVE error.
Un saludo
Por gersonm el 12 de Julio de 2010
Por Inyaka el 12 de Julio de 2010
gersonm-blog :
¿mas útil que un cero a la izquierda?
si, estoy seguro que tarde o temprano me salvara la vida
Por russbellc el 27 de Octubre de 2015