php

No concatenes cadenas, usa printf o sprintf en PHP

Una de las cosas más comunes que hacemos como desarrolladores es concatenar cadenas. El operador para concatenar cadenas en PHP es el punto. Concatenamos dos cadenas así:

$saludo = "hola" . " mundo";

Pero la cosa se complica cuando quieres concatenar varias cosas de distintos tipos, o concatenar resultados de llamar a funciones. Es por ello que hoy explicaré una alternativa a concatenar en PHP, y me refiero a las funciones printf y sprintf.

Nota: para el generador de código de CodeIgniter utilicé mucho la función sprintf.

La teoría

Estas dos funciones que veremos sirven para muchísimas cosas, pero aquí únicamente te explicaré a usarlas y cómo te ayudarán a mejorar (en algunas ocasiones) tu código. Funcionan exactamente que en C.

Lo que hace printf y sprintf es formatear una cadena con “placeholders”. La diferencia entre printf y sprintf es que printf imprime directamente el mensaje formateado, mientras que sprintf regresa una cadena que incluye el mensaje formateado.

La práctica: cómo usar printf

Vamos a ver algunas comparaciones entre usar echo concatenando cadenas o usar printf.

Para mandar un mensaje con variables puedes escribir esto:

printf("Hola %s tu edad es %d", $nombre, $edad);

En lugar de esto:

echo "hola $nombre tu edad es $edad";

Vas a agradecerlo cuando llames a funciones. Veamos este otro ejemplo en donde se imprime el resultado de llamar a dos funciones:

See the gist on github.

Claro que podrías almacenar el resultado de la llamada en variables separadas, pero el punto aquí era hacerlo de manera corta. Ahora veamos el equivalente con sprintf:

See the gist on github.

De hecho, desde que uno lee la cadena del formato sabe lo que se va a imprimir al final. Recuerda que estamos haciéndolo con ejemplos simples, aunque en la vida real a menudo vas a encontrar algunos realmente complejos.

Las comillas y echo

Otro problema que printf resuelve es cuando queremos imprimir y encerrar algo entre comillas. Tal vez no sea muy común lo que veremos a continuación, aunque de igual manera vamos a ver este ejemplo en donde no podemos usar comillas simples pero tenemos que concatenar un mensaje:

See the gist on github.

En este caso se muestran los datos encerrados entre comillas. En ocasiones se necesita eso, cosa que realmente se complica con más variables. Con printf sería distinto:

See the gist on github.

Así podría mostrar ejemplos, pero en resumen, printf es mejor que concatenar y usar echo en algunas ocasiones.

Un buen uso de printf

No creo que en la actualidad sea bueno usar PHP puro para mostrar HTML pero viene de maravilla cuando, por ejemplo, queremos renderizar un enlace que le envíe un correo a alguien. Normalmente sería así:

See the gist on github.

Con printf queda más expresivo:

See the gist on github.

Además de que nos evita poner la variable dos veces. En ese ejemplo usamos la numeración de argumentos en %1$s que se separa en:

  • %: signo de porcentaje, siempre va al inicio
  • 1$: el número de argumento que pasamos a printf
  • s: el formato, en este caso s es string, d es entero.

Puedes leer más en la documentación oficial.

PHP y sprintf

Como lo dije, la diferencia entre printf y sprintf es que sprintf devuelve el resultado en lugar de imprimirlo en el flujo de salida. Así:

See the gist on github.

Con esto podríamos obtener el mensaje formateado para guardarlo en una base de datos, concatenarlo con otros componentes y cosas de esas.

Conclusión

En ningún momento digo que esto debe usarse siempre, solamente estoy haciendo un pequeño análisis de cómo printf viene mejor en algunas ocasiones en donde echo no.

Todo dependerá de las situaciones a las que te enfrentes, pero siempre es bueno conocer alternativas.

Te invito a leer más sobre PHP aquí.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Imprimir PDF con Bot de Telegram

La impresión de un PDF en cualquier impresora se puede automatizar con un bot de…

3 días hace

Enviar mensaje con bot de Telegram usando JavaScript (lado del cliente)

Hoy te enseñaré cómo enviar un mensaje a un usuario desde un bot de Telegram…

4 días hace

PHP: incrustar imagen en base64

El día de hoy te enseñaré algo muy sencillo pero útil al programar con PHP:…

4 días hace

Plugin ESC POS – Actualización 3.4.0: imprimir HTML

El plugin para imprimir en impresoras térmicas alcanza hoy su versión 3.4.0 agregando soporte para…

5 días hace

JavaScript (lado del cliente): leer pixeles de imagen

En ocasiones es necesario leer los pixeles y colores de una imagen con JavaScript del…

2 semanas hace

PHP y JavaScript: llenar select con AJAX

Siguiendo con los tutoriales de listas desplegables o select con JavaScript, vamos a ver cómo…

2 semanas hace

Esta web usa cookies.