If you use the command line interface (CLI SAPI), you may be interested by the 3 standard input/output streams (STDIN, STDOUT & STDERR) described at: https://www.php.net/manual/en/features.commandline.io-streams.php
(PHP 5, PHP 7, PHP 8)
fprintf — Escribe una cadena formateada en un flujo
Escribe la cadena producida con el formato format
en el flujo representado por stream
.
stream
Un puntero del sistema de archivos de tipo resource que es habitualmente creado utilizando la función fopen().
format
La cadena de formato está compuesta por cero o más directivas:
caracteres ordinarios (excepto %
)
que se copian directamente al resultado y
especificaciones de conversión,
cada una con su propio parámetro.
Una especificación de conversión que sigue este prototipo:
%[argnum$][flags][width][.precision]specifier
.
Un entero seguido de un signo dólar $
,
para especificar qué número de argumento tratar en la conversión.
Bandera | Descripción |
---|---|
- |
Justifica el texto a la izquierda dado el ancho del campo; la justificación a la derecha es el comportamiento por omisión. |
+ |
Prefija los números positivos con un signo más
+ ; por omisión solo los números
negativos son prefijados con un signo negativo.
|
(espacio) |
Rellena el resultado con espacios. Esto es por omisión. |
0 |
Rellena solo los números a la izquierda con ceros.
Con el especificador s esto también puede
rellenar a la derecha con ceros.
|
' (char) |
Rellena el resultado con el carácter (char). |
Sea un entero indicando el número de caracteres (mínimo)
que esta conversión debe producir, o *
.
Si *
es utilizado, entonces el ancho es proporcionado
como un valor entero adicional precediendo al que se formatea
por el especificador.
Un punto .
seguido opcionalmente
sea de un entero, o de *
,
cuya significación depende del especificador:
e
, E
,
f
y F
:
esto es el número de dígitos a mostrar después
de la coma (por omisión, esto es 6).
g
, G
,
h
y H
:
esto es el número máximo de dígitos significativos a mostrar.
s
: actúa como un punto de corte,
definiendo un límite máximo de caracteres de la cadena.
Nota: Si el punto es especificado sin un valor explícito para la precisión, 0 es asumido. Si
*
es utilizado, la precisión es proporcionada como un valor entero adicional precediendo al que se formatea por el especificador.
Especificador | Descripción |
---|---|
% |
Un carácter de porcentaje literal. No se necesita ningún argumento. |
b |
El argumento es tratado como un entero y presentado como un número binario. |
c |
El argumento es tratado como un entero y presentado como el carácter de código ASCII correspondiente. |
d |
El argumento es tratado como un entero y presentado como un número entero decimal (firmado). |
e |
El argumento es tratado como una notación científica
(ej. 1.2e+2 ).
|
E |
Como el especificador e pero utiliza
una letra mayúscula (por ejemplo 1.2E+2).
|
f |
El argumento es tratado como un número de coma flotante (tipo número decimal) y presentado como un número de coma flotante (teniendo en cuenta la configuración local). |
F |
El argumento es tratado como un número de coma flotante (tipo número decimal) y presentado como un número de coma flotante (sin tener en cuenta la configuración local). |
g |
Formato general. Sea P igual a la precisión si diferente de 0, 6 si la precisión es omitida o 1 si la precisión es cero. Entonces, si la conversión con el estilo E tuviera como exponente X: Si P > X ≥ −4, la conversión es con estilo f y precisión P − (X + 1). De lo contrario, la conversión es con el estilo e y precisión P - 1. |
G |
Como el especificador g pero utiliza
E y f .
|
h |
Como el especificador g pero utiliza F .
Disponible a partir de PHP 8.0.0.
|
H |
Como el especificador g pero utiliza
E y F . Disponible a partir de PHP 8.0.0.
|
o |
El argumento es tratado como un entero y presentado como un número octal. |
s |
El argumento es tratado y presentado como una cadena de caracteres. |
u |
El argumento es tratado como un entero y presentado como un número decimal no firmado. |
x |
El argumento es tratado como un entero y presentado como un número hexadecimal (las letras en minúsculas). |
X |
El argumento es tratado como un entero y presentado como un número hexadecimal (las letras en mayúsculas). |
El especificador de tipo c
ignora el alineamiento y el tamaño.
Intentar utilizar una combinación de una cadena y especificadores con juegos de caracteres que necesitan más de un octeto por carácter dará un resultado inesperado.
Las variables serán forzadas a un tipo apropiado para el especificador:
Tipo | Especificadores |
---|---|
string | s |
int |
d ,
u ,
c ,
o ,
x ,
X ,
b
|
float |
e ,
E ,
f ,
F ,
g ,
G ,
h ,
H
|
values
Devuelve la longitud de la cadena escrita.
A partir de PHP 8.0.0, se lanza una ValueError si el número de argumentos es nulo.
Anterior a PHP 8.0.0, se emitía un E_WARNING
en su lugar.
A partir de PHP 8.0.0, se lanza una ValueError si [width]
es inferior a cero o superior a PHP_INT_MAX
.
Anterior a PHP 8.0.0, se emitía un E_WARNING
en su lugar.
A partir de PHP 8.0.0, se lanza una ValueError si [precision]
es inferior a cero o superior a PHP_INT_MAX
.
Anterior a PHP 8.0.0, se emitía un E_WARNING
en su lugar.
A partir de PHP 8.0.0, se lanza una ArgumentCountError cuando se proporcionan menos argumentos de los requeridos.
Anterior a PHP 8.0.0, se devolvía false
y se emitía un E_WARNING
en su lugar.
Versión | Descripción |
---|---|
8.0.0 |
Esta función ya no devuelve false en caso de fallo.
|
8.0.0 |
Lanza una ValueError si el número de argumentos es cero;
anteriormente, esta función emitía un E_WARNING .
|
8.0.0 |
Lanza una ValueError si [width] es inferior a cero o superior a PHP_INT_MAX ;
anteriormente, esta función emitía un E_WARNING .
|
8.0.0 |
Lanza una ValueError si [precision] es inferior a cero o superior a PHP_INT_MAX ;
anteriormente, esta función emitía un E_WARNING .
|
8.0.0 |
Lanza una ArgumentCountError cuando se proporcionan menos argumentos de los requeridos;
anteriormente, esta función emitía un E_WARNING .
|
Ejemplo #1 fprintf(): Enteros con ceros iniciales
<?php
if (!($fp = fopen('date.txt', 'w'))) {
return;
}
$year = 2005;
$month = 5;
$day = 6;
fprintf($fp, "%04d-%02d-%02d", $year, $month, $day);
// escribirá la fecha formateada ISO en el fichero date.txt
?>
Ejemplo #2 fprintf(): Formato monetario
<?php
if (!($fp = fopen('currency.txt', 'w'))) {
return;
}
$money1 = 68.75;
$money2 = 54.35;
$money = $money1 + $money2;
// echo $money mostrará "123.1";
$len = fprintf($fp, '%01.2f', $money);
// escribirá "123.10" en el fichero currency.txt
echo "escritura de $len octetos en el fichero currency.txt";
// utilice el valor devuelto por fprintf para determinar el número de octetos escritos
?>
If you use the command line interface (CLI SAPI), you may be interested by the 3 standard input/output streams (STDIN, STDOUT & STDERR) described at: https://www.php.net/manual/en/features.commandline.io-streams.php