¿Qué representa el token% 1 $ s en WordPress [cerrado]

2

Últimamente he visto el token% 1 $ y otros similares en el código de WordPress últimamente, pero no puedo entender lo que significa. Aquí un ejemplo:

sprintf( __( '%1$s is deprecated. Use %2$s instead.' ),

¿Alguien sabe lo que significa?

    
pregunta Martin 16.02.2018 - 20:50

2 respuestas

8

Lea los documentos PHP en sprintf () .

  • %s es solo un marcador de posición para una cadena
  • %d es solo un marcador de posición para un número

Entonces, un ejemplo de sprintf se vería así:

$variable = sprintf(
    'The %s ran down the %s',   // String with placeholders
    'dog',      // Placed in the first %s placeholder
    'street'    // Placed in the second %s placeholder
);

Lo que devolverá una cadena a nuestra variable $variable :

  

El perro corrió por street

Al numerar los marcadores de posición es a la vez una forma fácil para el desarrollador de decir rápidamente qué cadena siguiente se colocará dónde. También nos permite reutilizar una cadena. Tomemos otro ejemplo con marcadores de posición numerados:

$variable = sprintf(
    'The %1$s ran down the %2$s. The %2$s was made of %3$s',    // String with placeholders
    'dog',      // Will always be used in %1$s placeholder
    'street',   // Will always be used in %2$s placeholder
    'gravel'    // Will always be used in %3$s placeholder
);

Lo que devolverá una cadena a nuestra variable $variable :

  

El perro corrió por la calle . La calle se hizo de gravel

Finalmente, la función __() nos permite traducir las cadenas que se le han pasado. Al pasar los marcadores de posición __() , y luego pasar toda la cadena a sprintf() , podemos traducir lo que se pasa a la función de traducción, lo que nos permite hacer que nuestra cadena y nuestra aplicación sean un poco más dinámicas.

    
respondido por el Howdy_McGee 16.02.2018 - 21:09
4

No es una cosa de WordPress, es una cosa de PHP. %1$s , %2$s , etc., son marcadores de posición para variables en una cadena formateada devuelta por sprintf() (o impreso por printf() ).

El 1$ indica que es la variable first , 2$ sería la segunda, y así sucesivamente. El s indica que es una variable cadena . Existen otras opciones (por ejemplo, d indicaría un número entero).

El ejemplo que das es incompleto: ciertamente es algo como esto en su totalidad:

sprintf( __( '%1$s is deprecated. Use %2$s instead.' ),
$string_1,
$string_2 );
    
respondido por el Pat J 16.02.2018 - 21:05

Lea otras preguntas en las etiquetas