¿Por qué printf() en PHP no funciona cuando uso comillas dobles?

1 minuto de lectura

printf("by %1$s on %2$s", 'string1', 'string2'); no funciona, mientras que printf('by %1$s on %2$s', 'string1', 'string2'); lo hace.

De hecho, estoy diseñando un tema de WordPress y siguiendo muy de cerca el tema original de twentyten. Lo extraño es que he estado usando comillas dobles en todas mis declaraciones anteriores de printf() sin ningún problema.

avatar de usuario
edoriano

Porque cuando estás usando comillas dobles, el $s se trata como una variable

Como en:

$x = "World";
echo "Hello $x"; // Will print: "Hello World

donde como cuando se usa:

$x = "World";
echo 'Hello $x'; // Will just print "Hello $x"

Para una explicación más detallada puedes consultar el manual:

Cuerdas en General

comillas simples contra comillas dobles

  • @fterh, debe marcar esta respuesta como correcta si lo ayudó (la gran flecha verde a la izquierda).

    – Juan P

    14 de marzo de 2011 a las 11:17

Es muy importante darse cuenta de que php está tratando las cadenas entre comillas simples y dobles de manera diferente.

Puedes leer más en oficial documentos phppero déjame darte un punto culminante:

$t="bla";
echo '$t';

generará $t, donde

$t="bla";
echo "$t";

saldrá bla

Eso es porque tienes el bit ‘$s’ en tu cadena. Cuando se usan comillas dobles, PHP lo interpreta como una variable e intenta analizarlo. Probablemente usó comillas dobles sin el $ en ella antes.

Como dicen las otras respuestas, trata $s como una variable, siempre se puede escapar de la $

printf("by %1\$s on %2\$s", 'string1', 'string2');

Sin embargo, usaría comillas simples, ya que php no necesita analizar la cadena y, por lo tanto, es más rápido.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad