Menú
Está libre
registro
hogar  /  Consejo/ PHP sprintf: formateo y procesamiento de cadenas. Funciones de salida de formato en PHP Printf ejemplos de php

PHP sprintf: formateo y procesamiento de cadenas. Funciones de salida de formato en PHP Printf ejemplos de php

printf("cómo formatear", parámetro1, parámetro2, ...): muestra el resultado en la pantalla

$ resultado = sprintf("..", .., .., ...) - lo mismo, solo que la cadena no se muestra, pero se coloca en $ result

Cita de la traducción del manual ( EJEMPLOS debajo:-):

sprintf

sprintf: devuelve una cadena formateada
Descripción
sprintf (formato de cadena, mixto ...);

Devuelve una cadena, procesada de acuerdo con la cadena de formato. formato .

Una cadena de formato que contiene cero o más directivas: caracteres regulares (excepto%) que se copian directamente en el resultado y que se copian directamente en el resultado, y descripciones de cambios, cada uno de los cuales realiza determinadas acciones. Esto aplica a sprintf () y para printf ()

Cada descripción de cambio consta de los siguientes elementos, en orden:

    Adicional especificador de relleno que dice qué caracteres se utilizarán para completar el resultado con el tamaño correcto de la cadena. Pueden ser espacios o 0 (carácter cero). Lleno de espacios por defecto. Se puede especificar un carácter de relleno alternativo con una comilla simple ("). Consulte los ejemplos a continuación.

    Adicional especificador de alineación que dice que el resultado debe estar alineado a la izquierda o alineado a la derecha. Por defecto, la alineación es correcta; símbolo - se alineará a la izquierda.

    Adicional especificador de ancho, que dice con cuántos caracteres (mínimo) se puede hacer el reemplazo dado.

    Adicional especificador de precisión que dice cuántos lugares decimales mostrar para números de coma flotante. Este especificador no tiene ningún efecto sobre tipos distintos de double. (otro función útil para formatear números este formato numérico () .)

  1. Especificador de tipo que indica cómo se debe interpretar el tipo de datos del argumento. Tipos posibles:

    % es un símbolo de porcentaje. No se requiere argumento.
    b - el argumento se trata como un número entero y se representa como un número binario.
    c: el argumento se trata como un número entero y se representa como un carácter con un valor ASCII.
    d: el argumento se trata como un número entero y se representa como un número decimal.
    f: el argumento se trata como un doble y se representa como un número de punto flotante.
    o - el argumento se trata como un número entero y se representa como un número octal.
    s: el argumento se interpreta y se presenta como una cadena.
    x: el argumento se trata como un número entero y se representa como un número hexadecimal (con letras minúsculas).
    X: el argumento se trata como un número entero y se representa como un número hexadecimal (con letras mayúsculas).
Ejemplos de

Ejemplo 2.sprintf: formateo de moneda

$ dinero1 = 68,75; $ dinero2 = 54,35; $ dinero = $ dinero1 + $ dinero2; // echo $ dinero dará como resultado "123.1"; $ formateado = sprintf ("% 01.2f", $ dinero); // echo $ formateado dará como resultado "123.10"

Ejemplos de

Todo lo que esta escrito >>> entre tales corchetes <<< es el resultado de la función (es decir, un ejemplo de salida a la pantalla) $ s = "MyString"; -> cadena% s $ f = 12345.6789; -> fracción% f $ d = 12345; -> entero% d 10 ° sistema: 0123456789 16 números% x 16 ° sistema: 0123456789abcdef 16 números% X 16 ° sistema: 0123456789ABCDEF 8 números% o 8 ° sistema: 01234567 2 números% b 2 ° sistema: 01 solo imprima el número: printf ("% d", $ D); >>> 12345<<< просто выводим 16число: printf("%X",123456789); >>> 75BCD15<<< просто выводим 2число: printf("%b",$d); >>> 11000000111001 <<< просто выводим дробное число: printf("%f",$f); >>> 12345.6789 <<< дополнение чисел нулями: printf("%010d",$d); >>> 0000012345 <<< округление до 3х знаков после запятой: printf("%.3f",$f); >>> 12345.679 <<< просто выводим число + посторонний текст: printf("посторонний%dтекст",$d); >>> texto extraño 12345<<< вывод нескольких переменных - последовательное перечисление printf("%d-%f-%s",$d,$f,$s); >>> 12345-12345.678900-MyString<<< выравнивание (ширина 20 символов) по правому краю, пустоту заполняем "_": printf("%"_20s",MyString); >>> ____________MyString<<< выравнивание по левому краю, пустоту заполняем "x": printf("%-"x20s",MyString); >>> MyStringxxxxxxxxxxxx<<<

Vea otros ejemplos aquí:

La función estándar de la consola C es printf. Su descripción está contenida en el archivo de encabezado stdio.h. Con esta función, puede enviar datos o mensajes personalizados a la consola. El lenguaje C distingue entre mayúsculas y minúsculas. Por ejemplo, las dos funciones printf y scanf son diferentes de las de Printf y Scanf. Todos los caracteres de las funciones printf y scanf también deben escribirse en minúsculas. Uno de los ejemplos más simples de C printf que muestra el saludo familiar de hola mundo es:

Definición de las funciones del grupo printf en el archivo "stdio.h"

El archivo "stdio.h" se refiere a la biblioteca de E / S estándar de C. Printf y funciones similares se describen a continuación:

Las funciones enumeradas cargan datos de determinadas ubicaciones, los convierten en una cadena de caracteres y los envían a los flujos de salida especificados.

La familia de funciones printf

Las funciones del grupo printf en el lenguaje C se utilizan para procesar y formatear la salida de datos al flujo estándar. Además, las funciones printf y vprintf escriben en el flujo de salida estándar, las funciones fprintf y vfprintf envían los valores de los argumentos de salida a un flujo de salida especificado, y snprintf, sprintf, vsnprintf y vsprintf escriben datos en una cadena de caracteres. Todas estas funciones operan usando una cadena de formato que especifica las conversiones de argumentos requeridas para la salida.

La función fprintf escribe el resultado en el flujo de salida. La función sprintf envía el resultado a un búfer, que es una cadena de caracteres. El comportamiento de la función no está definido si la cadena que se va a generar excede el tamaño de la matriz de búfer.

La función snprintf, como la anterior, escribe datos en un búfer de cadena. La cadena de caracteres resultante tiene terminación nula a menos que bufsz (tamaño de búfer) sea cero. De lo contrario, si el valor de bufsz es cero, entonces no se envía nada al búfer, y el búfer en sí mismo puede ser un puntero nulo, pero el valor de retorno (el número de bytes que deberían haberse escrito) aún se calcula.

La función printf_s actúa básicamente de la misma manera que printf, excepto por una cosa. La principal diferencia entre las descripciones de printf_s en C y printf es que la función printf_s verifica la cadena de formato en busca de caracteres válidos, a diferencia de printf, que solo verifica la cadena de formato para un puntero nulo.

Echemos un vistazo más de cerca a la función printf.

descripción general

En C, los caracteres se imprimen en la salida estándar llamando a la función printf. El comando C printf formatea un conjunto de datos de salida y los envía a stdout. Los valores pasados ​​como argumentos a la función se imprimen en la consola de acuerdo con la cadena de formato especificada, que a su vez contiene dos tipos de elementos. El primer tipo son los caracteres que se muestran en la pantalla, y los elementos que determinan las características del formato de datos y son responsables del método de presentación de argumentos en la salida pertenecen al segundo tipo.

Al imprimir variables con printf en C, las combinaciones especiales de caracteres en la cadena de argumentos se reemplazan con datos convertidos de acuerdo con estos caracteres, y cada tipo de datos tiene sus propias especificaciones de formato de salida.

Tipo de función y valor de retorno

La función printf que tiene devuelve un valor entero que indica el número de caracteres impresos en la pantalla. Por ejemplo, puede asignar:

int k = printf ("Hola% c% d% s", "a", 11, "¡a todos!"),

y luego por el valor de la variable k es fácil determinar si ocurrió un error en la salida. Si se devuelve un valor negativo (si la función devolvió "-1"), podemos concluir que ocurrió un error durante su ejecución.

Sintaxis y dependencias

Para utilizar la función printf, debe incluir el archivo de encabezado "stdio.h" de la siguiente manera:

#incluir

La plantilla de función se ve así:

int printf (formato const char *, ...)

La elipsis se refiere a la lista de argumentos a imprimir. La función printf se puede utilizar con un número diferente de argumentos, pero el primero siempre está delimitado en ambos lados por comillas dobles, y cada uno posterior debe estar separado de la coma anterior. Lo que está escrito entre comillas dobles y no es una especificación de formato se imprime sin cambios; de lo contrario, si se encuentra un especificador, se copia el tipo de su valor.

Formulario para establecer especificaciones de formato:

% [banderas] [ancho] [. posición] [largo] tipo

Formateo con printf en valores de salida C

La cadena de formato especificada entre paréntesis después del nombre de la función llamada se lee solo en una dirección: de izquierda a derecha, y el primer argumento especificado después de esta línea se genera solo si se encuentra la primera especificación. Hasta que finalice la cadena de formato, las especificaciones especificadas en ella iniciarán la conversión e impresión de los argumentos subsiguientes. En una cadena de formato, el carácter de espacio se trata como un carácter normal y se pasa a la salida cuando no se utiliza en una expresión de especificación de formato.

El carácter "%" indica el comienzo de la especificación del formato de salida, seguido del código de formato. Todos los campos de la especificación están separados y especifican condiciones de formato para números o caracteres.

La salida de printf formateada en C tiene sus propias peculiaridades. Si el número de argumentos enumerados supera el número de especificaciones de formato, se omiten y no se muestran. De lo contrario, si hay más especificaciones de formato que valores en la lista de argumentos para imprimir, el resultado de la llamada a la función no está definido.

Para indicar explícitamente qué argumento debe usar el recuento, es posible usar "% m $" en lugar de "%" y "* m $" en lugar de "*", y m, un valor decimal entero, denota la posición de el argumento requerido (la indexación comienza desde uno) ...

Opciones

Banderas utilizadas en la cadena de formato
BanderaDescripción
- Alinear a la izquierda el resultado en el cuadro de salida
+ Cuando se muestra un valor numérico que tiene un signo, se ve obligado a imprimir un "+" delante de un valor positivo (de forma predeterminada, solo se muestra un "-" delante de un valor negativo)
0 Para los números enteros y de coma flotante, se utilizan ceros a la izquierda en lugar de espacios para llenar los dígitos de la izquierda cuando se especifica un ancho de campo que es mayor que la longitud de un número. Para enteros, la bandera se ignora si la precisión se especifica explícitamente. Para otras conversiones que utilizan este indicador, el comportamiento de la función no está definido. La bandera "0" se ignora si la bandera "-" está presente
espacioSi el resultado de la salida de una expresión que tiene un signo no comienza con el carácter de este signo o está vacío, se agrega un espacio al resultado. La bandera "espacio" se ignora si la bandera "+" está presente
# Forma alternativa de conversión en curso

Varios especificadores de formato

Especificador de formatoUso y descripción para printf CTipo de argumento
% Entrada literal "%"
CMuestra un carácter. El argumento se convierte al tipo unsigned char. Cuando se usa el modificador "l", el argumento se convierte en una cadena de caractereschar sin firmar
sImprime una cadena de caracteres. El argumento debe ser un puntero al elemento inicial de la matriz de caracteres.char *
D
I
Imprime la representación decimal de un valor entero con signoEn t
oMostrar valor entero octal sin signoint sin firmar
X
X
Genera la representación hexadecimal de un valor entero sin signo. Los caracteres "a", "b", "c", "d", "e", "f" se utilizan para convertir "x". Y para convertir "X" - "A", "B", "C", "D", "E", "F"int sin firmar
tuGenera una conversión decimal sin un valor entero con signo. Si el valor convertido y la precisión son ambos 0, no se emiten caracteresint sin firmar
F
F
Visualización de la representación decimal de un número de coma flotante con signodoble
mi
mi
La salida de la representación exponencial decimal se redondea y se convierte de modo que quede un dígito antes del punto decimal, y el número de dígitos después del punto decimal corresponda a la precisión de la representación (de forma predeterminada, la precisión es 6, y si es 0 se especifica, entonces el carácter de coma no se emite en absoluto). El carácter "e" se muestra en mayúsculas o minúsculas según la conversión.doble
a
A
Visualización de la representación hexadecimal de un número de coma flotantedoble
gramo
GRAMO
Muestra la representación decimal de un número de coma flotante o su representación exponencial decimal, según el valor y la precisióndoble
norteDevuelve el número de artículos impresos por printf. El resultado se escribe en la variable a la que apunta el argumento. La lista de materiales no puede contener banderas, ancho de campo o precisiónEn t *
pagSalida de punterovacío *

Modificador de ancho de campo

La cadena de formato en printf C puede contener un número entero después del signo de porcentaje y antes del comando de formato. Modifica el ancho del campo y afecta la presentación de los datos mostrados. El ancho de campo más pequeño destinado a un valor está determinado por este número, y la presencia de dicho modificador, si el argumento es menor que el campo asignado, hace que se agreguen espacios o ceros al resultado. El marcador de posición predeterminado es un carácter de espacio, pero puede establecerlo en cero prefijándolo con la especificación de ancho. El modificador especifica el ancho mínimo, y cualquier valor que exceda este mínimo se imprimirá sin desorden. Un número, por ejemplo, de menos de ocho caracteres e impreso con la especificación "% 08d" se rellenará con ceros hasta los ocho caracteres necesarios.

Estos modificadores también pueden especificar opciones de precisión o alineación.

Modificador de precisión

El modificador de precisión se utiliza para determinar el número de posiciones decimales para imprimir en representación numérica. Para agregar un modificador de precisión, debe colocar un punto después de la especificación de ancho de campo y especificar el valor de precisión deseado después. El modificador de precisión se define para los formatos "e", "f", "a", "E", "A" y "F". Para enteros, el modificador establece el número de dígitos mostrados, agregando ceros al dígito de la izquierda, si es necesario, y cuando se muestran números racionales, determina el número requerido de lugares decimales. Con respecto a las variables de cadena: el número que sigue al punto en el modificador de precisión sirve como determinante de la longitud máxima del campo en la salida. Por ejemplo, dada la especificación de formato "% 4.8s", se emitirá una cadena con una longitud en el rango de cuatro a ocho caracteres; si se excede, se omitirán los caracteres extremos.

Otros modificadores de formato

La alineación predeterminada es la alineación a la derecha, sin embargo, esto se puede cambiar colocando un "-" después del "%". Esta especificación de formato establece la alineación a la izquierda.

Además, la función printf es capaz de distinguir entre los tipos cortos y largos de valores enteros que se van a imprimir. Los especificadores válidos son "o", "d", "u", "i", "x" y "X". El tipo de valor largo se establece con el modificador "l" y el tipo corto se establece con el modificador "h". Por ejemplo, al imprimir un entero largo y un int corto sin signo, las especificaciones de formato se ven como "% ld" y "% hu", respectivamente.

Ejemplos de

1. Descripción de printf C y los resultados de llamar a cada función:

2. Visualización de un mensaje de diálogo simple:

printf ("mensaje");

3. Código de programa:

Las expresiones especificadas delante de las especificaciones de formato se imprimen en la pantalla, así como los argumentos que siguen a la cadena de formato. El resultado de ejecutar las funciones printf C anteriores, descripción de los datos de salida:

Este ejemplo ilustra la visualización utilizando varios formatos de cadenas, variables enteras, caracteres y números de coma flotante.

La función de entrada estándar de scanf y ejemplos de su uso

La función scanf se utiliza para leer la entrada del teclado. Para obtener una descripción de printf y scanf en C, consulte el archivo de encabezado "stdio.h".

scanf ("especificadores de formato", & valor1, & valor2, ...);

Un ejemplo simple de trabajar con la función scanf:

#incluir

Genera una cadena, valor de variable o expresión.
Sintaxis:

Imprimir (cadena arg)

La función print () imprime el argumento arg, que puede ser una variable o una expresión.

vsprintf ()

Devuelve una cadena formateada (PHP 4> = 4.1.0, PHP 5)

Descripción:

String vsprintf (formato de cadena, argumentos de matriz)

Esta función es similar a sprintf (), pero no toma un número variable de argumentos, sino una matriz.

Imprime uno o más valores.
Sintaxis:

Eco (cadena arg1, cadena ...)

La función echo () muestra los valores de los parámetros enumerados.
echo () es en realidad una construcción de lenguaje, por lo que no se requieren paréntesis, incluso si se utilizan varios argumentos.
echo "Un salto de línea en el código se guarda y se usa en la salida".
"para evitar este uso".
"operador de concatenación";

Genere una cadena formateada.
Sintaxis:

Int printf (formato de cadena [, argumentos mixtos, ...]);

Hace lo mismo que sprintf (), excepto que la cadena resultante no se devuelve, sino que se envía al navegador del usuario.

Realiza formateo de cadenas con sustitución de variables.
Sintaxis:

Sprintf ($ formato [, argumentos, ...])

Esta función devuelve una cadena basada en una cadena de formato que contiene algunos caracteres especiales, que posteriormente serán reemplazados por los valores de las variables correspondientes de la lista de argumentos.
La cadena de formato $ format puede incluir comandos de formato precedidos por un carácter%.
Todos los demás caracteres se copian en la cadena de salida tal cual. Cada especificador de formato (es decir, el carácter% seguido de los comandos) coincide con uno y solo un parámetro especificado después del parámetro $ format. Si necesita poner% en el texto como un carácter regular, debe duplicarlo:

Echo sprintf ("El porcentaje fue% d %%", $ porcentaje);

Cada especificador de formato tiene un máximo de cinco elementos (en el orden en que aparecen después del carácter%):

Un especificador de tamaño de campo opcional que especifica cuántos caracteres se asignarán al valor mostrado.
Como marcadores de posición (si el valor es menor que el tamaño del campo para mostrar)
se puede usar un espacio o 0, el valor predeterminado es un espacio. Puede especificar cualquier otro carácter de relleno especificándolo en la cadena de formato, precedido por un apóstrofo.
Un especificador de alineación opcional que determina si el resultado se alineará a la derecha o a la izquierda. La alineación predeterminada es a la derecha, pero también puede especificar la alineación a la izquierda especificando el símbolo - (menos).

Un número opcional que especifica el tamaño del campo para mostrar el valor. Si el resultado no está en el campo, "se arrastrará" más allá de los bordes de este campo, pero no se truncará.
Un número opcional, precedido por un punto ".", Que especifica cuántos lugares decimales habrá en la cadena resultante.
Este especificador se tiene en cuenta solo si se emite un número de punto flotante; de ​​lo contrario, se ignora.
Finalmente, el especificador de tipo de valor requerido (nota - ¡el único requerido!) Que se colocará en la línea de salida:

b - el siguiente argumento de la lista se muestra como un entero binario
c - se muestra el símbolo con el código especificado en el argumento
d - entero
f - número de coma flotante
o - entero octal
s - cadena de caracteres
x - entero hexadecimal con letras minúsculas a-z
X es un número entero hexadecimal con letras mayúsculas A-Z

A continuación, le mostramos cómo puede especificar la precisión de los números de punto flotante:

$ dinero1 = 68,75;
$ dinero2 = 54,35;
$ dinero = $ dinero1 + $ dinero2;
// echo $ money imprimirá "123.1" ...
$ formateado = sprintf ("% 01.2f", $ dinero);
// ¡echo $ formateado imprimirá "123.10"!

A continuación, se muestra un ejemplo de cómo generar un número entero, precedido por el número requerido de ceros:

$ isodate = sprintf ("% 04d-% 02d-% 02d", $ año, $ mes, $ día);

Interpreta la cadena de acuerdo con el formato y establece los valores de las variables.

Sintaxis:

Sscanf mixto (cadena str, formato de cadena [, cadena var1 ...])

La función sscanf () es lo opuesto a la función printf ().

Interpreta la cadena str según el formato, similar a la especificación printf ().

Si solo se especifican dos argumentos, los valores resultantes se devuelven en una matriz.

// obtener el número de serie $ serial = sscanf ("SN / 235-0001", "SN /% 3d-% 4d");
echo $ serial * 10000 + $ serial; // salidas: 2350001
// y la fecha de fabricación $ date = "01 de enero de 2000";
lista ($ mes, $ día, $ año) = sscanf ($ fecha, "% s% d% d");
echo "Fecha: $ año -". substr ($ mes, 0,3). "- $ dían";
// imprime: 2000-Jan-01

Al especificar parámetros opcionales adicionales (deben pasarse por referencia)

la función devuelve su número. Las variables que no reciben valores no se incluyen en el valor de retorno.

// generar un registro XML a partir de la cadena $ auth = "765tLewis Carroll";
$ n = sscan ($ auth, "% dt% s% s", & $ id, & $ first, & $ last);
eco "
$ primero
$ último
n ";

fprintf ()

Descripción:

Int fprintf (identificador de recursos, formato de cadena [, argumentos mixtos])

Escribe una cadena construida utilizando el formato de cadena de formato en la secuencia cuyo identificador se pasa a identificador. El argumento de formato se analiza en detalle en la descripción de la función sprintf ().

fprintf (): relleno con ceros


regreso;

fprintf ($ fp, "% 04d-% 02d-% 02d", $ año, $ mes, $ día);
// escribirá la fecha formateada en el archivo date.txt
?>

fprintf (): formateo de valores de moneda

if (! ($ fp = fopen ("moneda.txt", "w")))
regreso;

$ dinero1 = 68,75;
$ dinero2 = 54,35;
$ dinero = $ dinero1 + $ dinero2;
// echo $ dinero imprimirá "123.1";
$ len = fprintf ($ fp, "% 01.2f", $ dinero);
// la cadena "123.10" se escribe en el archivo currency.txt

echo "$ len bytes escritos en el archivo currency.txt";
?>

vfprintf ()

Escribe una cadena formateada en una secuencia (PHP 5)

Descripción:

Int vfprintf (identificador de recursos, formato de cadena, argumentos de matriz)

Escribe una cadena, formateada con formato, en el recurso de flujo especificado por el identificador. El formato es similar a sprintf ().

Funciona igual que fprintf (), pero toma una matriz de argumentos, no un número variable de argumentos.

Devuelve la longitud de la cadena de salida.

Consulte también: printf (), sprintf (), sscanf (), fscanf (), vsprintf () y number_format ().
Ejemplos de

vfprintf (): números enteros rellenados con ceros

si (! ($ fp = fopen ("fecha.txt", "w")))
regreso;

vfprintf ($ fp, "% 04d-% 02d-% 02d", matriz ($ año, $ mes, $ día));
// escribirá la fecha ISO formateada hasta la fecha.txt
?>

vprintf ()

Genera una cadena formateada (PHP 4> = 4.1.0, PHP 5)

Descripción:

Int vprintf (formato de cadena, argumentos de matriz)

Muestra los valores de la matriz args, formateados de acuerdo con el argumento de formato descrito en la documentación de la función sprintf ().

Esta función es similar a printf (), pero no toma un número variable de argumentos, sino una matriz.

Devuelve la longitud de la cadena de salida.

formato numérico ()

Formatea un número con grupos separados (PHP 3, PHP 4, PHP 5)

Descripción:

String number_format (número flotante [, int decimales])

string number_format (número flotante, int decimales, string dec_point, string miles_sep)

number_format () devuelve el número con formato. La función toma uno, dos o cuatro argumentos (no tres):

Si solo se pasa un argumento, el número se formateará sin una parte fraccionaria, pero con una coma (",") entre grupos de 3.

Si se pasan dos argumentos, el número se formateará con decimales después de un punto (".") Y punto y coma (",") entre grupos de dígitos de 3.

Si se pasan los cuatro argumentos, el número se formateará con decimales después del punto y con un separador entre grupos de 3, utilizando dec_point como punto decimal y miles_sep como separador de grupo.

Solo se utiliza el primer carácter de la cadena miles_sep. Por ejemplo, si pasa foo como miles_sep al formato 1000, number_format () devuelve 1f000.

Ejemplo usando number_format ()

En Francia, se utilizan habitualmente 2 decimales (",") y se utiliza un espacio ("") como separador de grupo. Este formato se obtiene utilizando el siguiente código:

$ número = 1234,56;

// formato inglés (predeterminado)
$ número_formato_inglés = formato_número ($ número);
// 1,234

// formato francés
$ nombre_format_francais = número_format ($ número, 2, ",", "");
// 1 234,56

$ número = 1234.5678;

// formato en inglés sin separadores de grupo
$ número_formato_inglés = formato_número ($ número, 2, ".", "");
// 1234.57

La función PHP sprintf le permite convertir y colocar varios argumentos en una sola cadena de caracteres. Los especificadores de formato le permiten trabajar con caracteres, cadenas, enteros y números reales.

El uso de la función está en demanda para formatear información tabular y crear plantillas. Se puede utilizar para la formalización preliminar de datos iniciales en una determinada estructura, cambiando su contenido o secuencia.

Sintaxis de la función PHP sprintf ()

El resultado de la función es una cadena de caracteres formada en una secuencia determinada a partir de datos específicos, los parámetros de la función:

  • cadena de formato;
  • lista de argumentos.

Se puede utilizar cualquier construcción y lógica para formatear, incluidas las etiquetas HTML. Aunque no hay restricciones sobre el uso de sprintf, el manual de PHP define los especificadores de conversión para que sean más una información numérica.

El elemento de formato comienza con un carácter% y termina con un carácter especificador. La mayoría de las capacidades de formato se encuentran en el área de la información numérica. Es muy práctico poder convertir un número a formatos binarios y hexadecimales. Aquí no vale la pena escribir un reemplazo para las funciones sprintf en PHP.

El ejemplo anterior destaca la convención de nomenclatura de argumentos y la diferencia entre el especificador x y X. El uso correcto de referencias a la secuencia de argumentos formateados es importante para el resultado correcto. La numeración siempre comienza en 1.

El orden en el que se utilizan los enlaces no importa, pero es importante recordar: la función PHP sprintf considera todos los elementos% (sin especificar el número de argumento) secuencialmente en la lista general. La numeración de la lista general no tiene nada que ver con el número o secuencia de% elementos indicados con números de parámetros específicos.

Describiendo un ejemplo del uso de sprintf en PHP

Si no hay posibilidad directa de controlar el argumento en forma de cadena, entonces no es un problema controlar la cadena de formato y enviar información digital a la cadena de resultado.

En las dos primeras líneas del ejemplo (que muestran los argumentos Arg1, Arg2c y Arg2p), el primer argumento es una cadena (el nombre de la posición) se muestra tal cual. El tercer argumento toma 12 (14) caracteres en la salida. La primera línea alinea el número a la izquierda con ceros hasta una longitud total de 12 caracteres. Hay cuatro caracteres después del punto. La segunda línea alinea el número a la derecha (parte fraccionaria) a 14 caracteres. El signo que debe alinear a la derecha es el símbolo -.

La cadena de formato es una cadena de caracteres normal. En él se pueden insertar expresiones calculadas. En este caso, se utilizaron inserciones ($ cL) y ($ cR) para resaltar otro número. Esto hizo que la cadena de formato fuera más clara y más fácil de escribir en todos los ejemplos.

Formateo de cadenas de formación

El trabajo de PHP en ruso, o la función sprintf, es el trabajo del intérprete en un entorno natural y conveniente. En realidad, una página HTML con inserciones de código PHP representa cualquier contexto en cualquier idioma. Esta no es la libertad que ofrece JavaScript en el entorno del navegador.

Para mostrar contenido ruso en PHP, no es necesario codificar el alfabeto cirílico, pero a veces es necesario utilizar la función de conversión iconv (). En cualquier caso, todo es accesible y legible.

El texto para insertar código PHP en una página HTML es comprensible y está muy solicitado. Aplicación en cadena de caracteres:

Valor variable ABC = ($ ABC) unidades

La inserción ($ ABC) solo importa una vez y también se realiza solo una vez.

Característica de la ejecución de código PHP en una página

Interprete sólo una vez ve la página y sólo una vez reemplaza inserciones ($ ABC) con sus valores. El programador puede, a su discreción, utilizar la frase "sólo una vez", obligando a PHP a acercarse al resultado deseado muchas veces.

En cualquier caso, una vez que la página HTML se envía al navegador, no contiene código PHP.

Si un elemento de página del navegador inició el contacto con el servidor, puede ejecutar un nuevo script PHP. Las inserciones ($ ABC) aquí son bastante relativas y no hay garantía de que el resultado sea correcto. Pero el uso de sprintf en PHP es la dinámica de tal posibilidad.

El desarrollador no solo puede obtener la ejecución deseada de dicha inserción, sino también cambiar la cadena a la que pasará el valor deseado.

El momento de la formación del contenido

Es natural utilizar el potencial de PHP como un medio para formar inserciones en una página HTML, como una herramienta para formar una página como un todo. Aquí es donde comienza el sitio. Tan pronto como se forma la página y, de hecho, un visitante llegó al sitio, de acuerdo con los conceptos modernos:

  • la página no se puede cambiar;
  • usuario a perder también está prohibido.

De hecho, un visitante llegó al sitio y recibió la primera respuesta en forma de código HTML. Es completamente incorrecto cambiar esta respuesta; significa decirle al visitante que la página la está cambiando. Pero la página está obligada a reaccionar a las acciones del visitante de manera adecuada y por iniciativa suya.

La llegada de un visitante es la primera respuesta. Acción del visitante: la respuesta adecuada y la preparación de una página para todas las acciones esperadas del próximo visitante.

Una parte significativa de la responsabilidad de la dinámica de la página a iniciativa del visitante recae en JavaScript, pero solo funciona en el navegador y solo puede enviar solicitudes AJAX al servidor. Cada llamada al servidor puede ejecutar un script PHP. Pero el momento de formación de la página y el momento de reacción a la solicitud difieren significativamente.

La función sprintf de PHP es ideal para programar dinámicamente una respuesta y completarla con el valor deseado.

Cambiar el código PHP en tiempo de ejecución

La idea de la dinámica de código nació con el primer lenguaje de programación y está presente en todos los lenguajes de programación modernos en la actualidad.

La ejecución de código con eval (una línea de código) se considera hoy en día un agujero de seguridad, pero es tan útil como peligroso.

No necesita usar la función eval () hoy para cambiar su código en tiempo de ejecución. Es más un desayuno rápido, uno o dos comandos, en lugar de una base práctica para construir la dinámica correcta.

La función PHP sprintf () le permite diseñar una plantilla de secuencia de comandos, como un código de objeto, que se llamará a la acción de un visitante en particular. La práctica establecida de registrar los cuerpos de los objetos en forma de archivos independientes es una solución ideal para cambiarlos durante el funcionamiento del sitio.

El uso de herramientas que complementan la funcionalidad de sprintf () permite no solo cambiar los objetos utilizados como resultado de las acciones de un visitante en particular, sino también transferir esta dinámica para trabajar con otros visitantes: este es el desarrollo del sitio , la dinámica de su funcionalidad, la acumulación de experiencia laboral y conocimientos.

(PHP 4, PHP 5, PHP 7)

sprintf - Devuelve una cadena formateada

Lista de parámetros

La cadena de formato consta de cero o más directivas: caracteres ordinarios (con la excepción de % ), que se copian directamente en la cadena resultante, y descriptores de transformación, cada uno de los cuales se reemplaza con uno de los parámetros. Esto se aplica a ambos sprintf () y para printf ().

Cada especificador de conversión consta de un signo de porcentaje ( % ) seguido de uno o más elementos adicionales (en el orden en que se enumeran aquí):

  1. Opcional descriptor de personaje indicando cómo se aplicará un signo (- o +) al número. De forma predeterminada, solo se usa el signo menos si el número es negativo. Este especificador hace que los números positivos también muestren un signo más, y se agregó en PHP 4.3.0.
  2. Opcional especificador de relleno que determina qué carácter se utilizará para rellenar el resultado a la longitud requerida. Podría ser un espacio o 0 ... El valor predeterminado es un espacio. Se puede especificar un carácter alternativo usando una comilla simple ( " ). Vea los ejemplos a continuación.
  3. Opcional especificador de alineación que especifica la alineación izquierda o derecha. Justificado a la derecha por defecto, - utilizado para la alineación a la izquierda.
  4. Número opcional, especificador de ancho, que especifica el número mínimo de caracteres que contendrá el resultado de esta conversión.
  5. Opcional especificador de precisión, especificado como un punto (".") seguido de una cadena decimal opcional que especifica cuántos lugares decimales mostrar para los números de coma flotante. Cuando se usa con cadenas, este especificador actúa como un punto de recorte que establece el límite máximo de caracteres. También puede especificar el carácter utilizado al completar un número entre un punto y un dígito.
  6. Especificador de tipo que determina cómo interpretar el tipo de datos del argumento. Tipos válidos:

    • % - símbolo de porcentaje. El argumento no se usa.
    • B- el argumento se trata como un número entero y se genera como un número binario.
    • C- el argumento se trata como un número entero y se muestra como un carácter con el código ASCII apropiado.
    • D- el argumento se trata como un número entero y se muestra como un número decimal con signo.
    • mi- el argumento se trata como un número en notación científica (por ejemplo, 1.2e + 2). El especificador de precisión especifica el número de lugares decimales, comenzando con Versiones PHP 5.2.1. En mas primeras versiones denotaba el número de dígitos significativos (un signo menos).
    • mi- similar % e pero usa una letra mayúscula (por ejemplo, 1.2E + 2).
    • F- el argumento se trata como un número de punto flotante y también se genera según la configuración regional.
    • F- el argumento se trata como un número de coma flotante y también se muestra, pero sin dependencia de la configuración regional. Disponible desde PHP 4.3.10 y PHP 5.0.3.
    • gramo % e y % f.
    • GRAMO- selecciona la entrada más corta de % E y % f.
    • o- el argumento se trata como un número entero y se muestra como un número octal.
    • s- el argumento se trata como una cadena.
    • tu- el argumento se trata como un número entero y se muestra como un número decimal sin signo.
    • X- el argumento se trata como un número entero y se muestra como un número hexadecimal (en minúsculas).
    • X- el argumento se trata como un número entero y se muestra como un número hexadecimal (en mayúsculas).

Las variables se convertirán al tipo apropiado para el especificador:

Manipulación de tipos
Tipo de El especificador
cuerda s
entero D, tu, C, o, X, X, B
doble gramo, GRAMO, mi, mi, F, F

Atención

Intentar utilizar una combinación de cadenas y especificadores de ancho con codificaciones que requieren más de un byte por carácter puede generar resultados inesperados.

La cadena de formato admite la numeración y el reordenamiento de parámetros. Por ejemplo:

Ejemplo # 1 Cambiar el orden de los parámetros

$ num = 5;
$ ubicación = "árbol";

$ formato = "% d monos están sentados en% s";

?>

Este código imprimirá "5 monos están sentados en un árbol". Ahora imagina que la cadena de formato está contenida en archivo separado, que luego se traducirá a otro idioma, y ​​lo reescribimos de esta forma:

Ejemplo # 2 Cambiar el orden de los parámetros

$ formato = "% D monos están sentados en% s";
echo sprintf ($ formato, $ num, $ ubicación);
?>

Surge un problema: el orden de los descriptores de conversión no coincide con el orden de los argumentos. No queremos cambiar el código, y necesitamos especificar a qué argumento corresponde este o aquel descriptor de conversión.

Ejemplo # 3 Cambiar el orden de los parámetros

$ formato = "% 1 $ d monos están sentados en% 2 $ s";
echo sprintf ($ formato, $ num, $ ubicación);
?>

La numeración de argumentos tiene otro uso: le permite imprimir el mismo argumento varias veces sin pasar parámetros adicionales a la función.

Ejemplo # 4 Cambiar el orden de los parámetros

$ formato = "% 1 $ d monos están sentados en% 2 $ s.
Es genial tener% 1 $ d monos sentados en% 2 $ s ".
;
echo sprintf ($ formato, $ num, $ ubicación);
?>

Al cambiar el orden de los parámetros posición de la manija n $ debe ir inmediatamente después del signo de porcentaje ( % ) antes de todos los demás descriptores, como se muestra en el ejemplo siguiente.

Ejemplo n. ° 5 Especificando un carácter de relleno

echo sprintf ("%". 9d \ n ", 123);
echo sprintf ("%". 09d \ n ", 123);
?>

123 000000123

Ejemplo n. ° 6 Uso de descriptor de posición y junto con otros descriptores

$ formato = "% 1 $ 04d monos están sentados en% 2 $ s";
echo sprintf ($ formato, $ num, $ ubicación);
?>

El resultado de este ejemplo:

Hay 0005 monos sentados en el árbol.

Comentario:

Intentar utilizar un especificador de posición mayor que PHP_INT_MAX, hará que la función genere una advertencia sprintf () .

Atención

los C el especificador de tipo ignora el relleno y el ancho

Valores devueltos

Devuelve una cadena formateada de acuerdo con la cadena de formato.

Ejemplos de

Ejemplo # 7 sprintf (): relleno con ceros

$ n = 43951789;
$ u = - 43951789;
$ c = 65; // ASCII 65 es "A"

// nota, el doble %% se muestra como un solo "%"
printf ("%% b ="% b "\ n", $ n); // representación binaria
printf ("%% c ="% c "\ n", $ c); // imprime el carácter ascii, igual que la función chr ()
printf ("%% d ="% d "\ n", $ n); // entero regular
printf ("%% e ="% e "\ n", $ n); // notación cientifica
printf ("%% u ="% u "\ n", $ n); // representación entera sin signo de un número positivo
printf ("%% u ="% u "\ n", $ u); // representación entera sin signo de un número negativo
printf ("%% f ="% f "\ n", $ n); // representación de punto flotante
printf ("%% o ="% o "\ n", $ n); // representación octal
printf ("%% s ="% s "\ n", $ n); // línea
printf ("%% x ="% x "\ n", $ n); // representación hexadecimal (minúsculas)
printf ("%% X ="% X "\ n", $ n); // representación hexadecimal (mayúsculas)

Printf ("%% + d ="% + d "\ n", $ n); // descriptor de signo con entero positivo
printf ("%% + d ="% + d "\ n", $ u); // especificador de signo con entero negativo
?>

El resultado de este ejemplo:

% b = "10100111101010011010101101"% c = "A"% d = "43951789"% e = "4.39518e + 7"% u = "43951789"% u = "4251015507"% f = "43951789.000000"% o = "247523255 "% s =" 43951789 "% x =" 29ea6ad "% X =" 29EA6AD "% + d =" +43951789 "% + d =" -43951789 "

Ejemplo # 8 printf (): descriptores de línea

$ s = "mono";
$ t = "muchos monos";

Printf ("[% s] \ n", $ s); // salida de línea normal
printf ("[% 10s] \ n", $ s); // justificación a la derecha con espacios
printf ("[% -10s] \ n", $ s); // alineación a la izquierda con espacios
printf ("[% 010s] \ n", $ s); // el relleno de ceros también funciona con cadenas
printf ("[%" # 10s] \ n ", $ s); // usa tu propio carácter de relleno "#"
printf ("[% 10.10s] \ n", $ t); // justificación a la izquierda con 10 caracteres cortados
?>