mirror of
https://github.com/php/doc-es.git
synced 2026-03-28 01:12:20 +01:00
git-svn-id: https://svn.php.net/repository/phpdoc/es/trunk@313393 c90b9560-bf6c-de11-be94-00142212c4b1
452 lines
14 KiB
XML
452 lines
14 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- $Revision$ -->
|
|
<!-- EN-Revision: b5003f8de6f535d6d7337df168d885693d6ccf19 Maintainer: jpberdejo Status: ready -->
|
|
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.sprintf">
|
|
<refnamediv>
|
|
<refname>sprintf</refname>
|
|
<refpurpose>Devuelve un string formateado</refpurpose>
|
|
</refnamediv>
|
|
|
|
<refsect1 role="description">
|
|
&reftitle.description;
|
|
<methodsynopsis>
|
|
<type>string</type><methodname>sprintf</methodname>
|
|
<methodparam><type>string</type><parameter>format</parameter></methodparam>
|
|
<methodparam choice="opt"><type>mixed</type><parameter>args</parameter></methodparam>
|
|
<methodparam choice="opt"><type>mixed</type><parameter>...</parameter></methodparam>
|
|
</methodsynopsis>
|
|
<para>
|
|
Devuelve un string producido de acuerdo con el string
|
|
<parameter>format</parameter>.
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 role="parameters">
|
|
&reftitle.parameters;
|
|
<para>
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><parameter>format</parameter></term>
|
|
<listitem>
|
|
<para>
|
|
El string de formato está compuesto de cero o más directivas:
|
|
caracteres ordinarios (excluyendo <literal>%</literal>) que son
|
|
copiados directamente al resultado y <emphasis>especificaciones
|
|
de conversión</emphasis>, cada una de las cuales da lugar a extraer su
|
|
propio parámetro. Esto aplica tanto para <function>sprintf</function>
|
|
como <function>printf</function>.
|
|
</para>
|
|
<para>
|
|
Cada especificación de conversión consiste en un signo de porcentaje
|
|
(<literal>%</literal>), seguido por uno o más de estos
|
|
elementos, en orden:
|
|
<orderedlist>
|
|
<listitem>
|
|
<simpara>
|
|
Un <emphasis>especificador de signo</emphasis> opcional que fuerza un signo
|
|
(- ó +) a ser utilizado en un número. Por defecto, sólo el signo - se utiliza
|
|
en un número si es negativo. Esta especificación fuerza números positivos
|
|
para que también tengan adjunto el signo + y fue agregada en PHP 4.3.0.
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
Un <emphasis>especificador de relleno</emphasis> opcional que
|
|
indica qué carácter se utiliza para rellenar el resultado hasta
|
|
el tamaño correcto de string. Este puede ser un caracter de espacio o un
|
|
<literal>0</literal> (el caracter cero). El valor por defecto es rellenar
|
|
con espacios. Un caracter de relleno alternativo se puede especificar
|
|
colocándole un prefijo de una comilla simple (<literal>'</literal>).
|
|
Ver los ejemplos mas adelante.
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
Un <emphasis>especificador de alineación</emphasis> opcional que indica
|
|
si el resultado debe ser alineado a la izquierda o a la derecha.
|
|
El valor por defecto es justificado a la derecha, un caracter <literal>-</literal>
|
|
aquí lo hará justificado a la izquierda.
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
Un número opcional, un <emphasis>especificador de ancho</emphasis>
|
|
que dice cuantos caracteres (como mínimo) debe producir esta
|
|
conversión.
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
Un <emphasis>especificador de precisión</emphasis> opcional en la forma
|
|
de un punto (`.') seguido de un string opcional de dígitos decimales
|
|
que indica cuántos dígitos decimales deben mostrarse para
|
|
los números de punto flotante. Cuando se utiliza este especificador con un string,
|
|
actúa como un punto de corte, estableciendo un límite máximo de caracteres al
|
|
string.
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Un <emphasis>especificador de tipo</emphasis> que indica como que tipo
|
|
deben ser tratados los datos del argumento. Los tipos posibles son:
|
|
<simplelist>
|
|
<member>
|
|
<literal>%</literal> - un caracter de porcentaje literal. No
|
|
se requiere argumento.
|
|
</member>
|
|
<member>
|
|
<literal>b</literal> - el argumento es tratado como un
|
|
integer y presentado como un número binario.
|
|
</member>
|
|
<member>
|
|
<literal>c</literal> - el argumento es tratado como un
|
|
integer y presentado como el caracter con ese valor
|
|
ASCII.
|
|
</member>
|
|
<member>
|
|
<literal>d</literal> - el argumento es tratado como un
|
|
integer y presentado como un número decimal (con signo).
|
|
</member>
|
|
<member>
|
|
<literal>e</literal> - el argumento es tratado como notación
|
|
científica (e.g. 1.2e+2).
|
|
El especificador de precisión indica el número de dígitos después del
|
|
punto decimal a partir de PHP 5.2.1. En versiones anteriores, se tomó como
|
|
el número de dígitos significativos (uno menos).
|
|
</member>
|
|
<member>
|
|
<literal>E</literal> - como <literal>%e</literal> pero utiliza
|
|
la letra mayúscula (e.g. 1.2E+2).
|
|
</member>
|
|
<member>
|
|
<literal>u</literal> - el argumento es tratado como un
|
|
integer y presentado como un número decimal sin signo.
|
|
</member>
|
|
<member>
|
|
<literal>f</literal> - el argumento es tratado como un
|
|
float y presentado como un número de punto flotante (consciente de la configuración regional).
|
|
</member>
|
|
<member>
|
|
<literal>F</literal> - el argumento es tratado como un
|
|
float y presentado como un número de punto flotante (no consciente de la configuración regional).
|
|
Disponible desde PHP 4.3.10 y PHP 5.0.3.
|
|
</member>
|
|
<member>
|
|
<literal>g</literal> - más corto de <literal>%e</literal> y
|
|
<literal>%f</literal>.
|
|
</member>
|
|
<member>
|
|
<literal>G</literal> - más corto de <literal>%E</literal> y
|
|
<literal>%f</literal>.
|
|
</member>
|
|
<member>
|
|
<literal>o</literal> - el argumento es tratado como un
|
|
integer y presentado como un número octal.
|
|
</member>
|
|
<member>
|
|
<literal>s</literal> - el argumento es tratado y
|
|
presentado como un string.
|
|
</member>
|
|
<member>
|
|
<literal>x</literal> - el argumento es tratado como un integer
|
|
y presentado como un número hexadecimal (con las letras
|
|
en minúsculas).
|
|
</member>
|
|
<member>
|
|
<literal>X</literal> - el argumento es tratado como un integer
|
|
y presentado como un número hexadecimal (con las letras
|
|
en mayúsculas).
|
|
</member>
|
|
</simplelist>
|
|
</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
</para>
|
|
<para>
|
|
El string de formato soporta numeración/intercambio de argumentos. Aquí está un
|
|
ejemplo:
|
|
<example>
|
|
<title>Intercambio de argumentos</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$num = 5;
|
|
$location = 'tree';
|
|
|
|
$format = 'There are %d monkeys in the %s';
|
|
printf($format, $num, $location);
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
Esto producirá "There are 5 monkeys in the tree". Pero
|
|
imaginemos que estamos creando un string de formato en un archivo separado,
|
|
generalmente por que nos gustaría internacionalizarlo y lo
|
|
reescribimos así:
|
|
<example>
|
|
<title>Intercambio de argumentos</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$format = 'The %s contains %d monkeys';
|
|
printf($format, $num, $location);
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
Ahora tenemos un problema. El orden de los marcadores de posición en el
|
|
string de formato no coincide con el orden de los argumentos en el
|
|
código. Nos gustaría dejar el código tal cual y simplemente indicar
|
|
en el string de formato a cuáles argumentos de los marcadores de posición se refieren.
|
|
Tendríamos que escribir el string de formato de esta forma:
|
|
<example>
|
|
<title>Intercambio de argumentos</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$format = 'The %2$s contains %1$d monkeys';
|
|
printf($format, $num, $location);
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
Un beneficio adicional aquí, es que se pueden repetir los marcadores de posición sin
|
|
agregar más argumentos en el código. Por ejemplo:
|
|
<example>
|
|
<title>Intercambio de argumentos</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$format = 'The %2$s contains %1$d monkeys.
|
|
That\'s a nice %2$s full of %1$d monkeys.';
|
|
printf($format, $num, $location);
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
Cuando se utiliza intercambio de argumentos, el <emphasis>especificador de posición</emphasis>
|
|
<literal>n$</literal> debe venir inmediatamente
|
|
después del signo de porcentaje (<literal>%</literal>), antes de cualquier otro
|
|
especificador, tal como se muestra en el ejemplo siguiente.
|
|
<example>
|
|
<title>Especificador de posición con otros especificadores</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$format= 'The %2$s contains %1$04d monkeys';
|
|
printf($format, $num, $location);
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
&example.outputs;
|
|
<screen>
|
|
<![CDATA[
|
|
The tree contains 0005 monkeys
|
|
]]>
|
|
</screen>
|
|
</example>
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><parameter>args</parameter></term>
|
|
<listitem>
|
|
<para>
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><parameter>...</parameter></term>
|
|
<listitem>
|
|
<para>
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 role="returnvalues">
|
|
&reftitle.returnvalues;
|
|
<para>
|
|
Devuelve un string producido de acuerdo con el string de formato
|
|
<parameter>format</parameter>.
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 role="changelog">
|
|
&reftitle.changelog;
|
|
<para>
|
|
<informaltable>
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>&Version;</entry>
|
|
<entry>&Description;</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry>4.0.6</entry>
|
|
<entry>
|
|
Fue agregado el soporte para numeración/intercambio de argumentos
|
|
</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 role="examples">
|
|
&reftitle.examples;
|
|
<example>
|
|
<title><function>printf</function>: ejemplos varios</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$n = 43951789;
|
|
$u = -43951789;
|
|
$c = 65; // ASCII 65 es 'A'
|
|
|
|
// fijarse en el doble %%, esto muestra un caracter '%' literal
|
|
printf("%%b = '%b'\n", $n); // representación binaria
|
|
printf("%%c = '%c'\n", $c); // muestra el caracter ascii, igual que la función chr()
|
|
printf("%%d = '%d'\n", $n); // representación estándar de un entero
|
|
printf("%%e = '%e'\n", $n); // notación científica
|
|
printf("%%u = '%u'\n", $n); // representación sin signo de un entero positivo
|
|
printf("%%u = '%u'\n", $u); // representación sin signo de un entero negativo
|
|
printf("%%f = '%f'\n", $n); // representación de punto flotante
|
|
printf("%%o = '%o'\n", $n); // representación octal
|
|
printf("%%s = '%s'\n", $n); // representación en una cadena
|
|
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); // especificador de signo sobre un entero positivo
|
|
printf("%%+d = '%+d'\n", $u); // especificador de signo sobre un entero negativo
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
&example.outputs;
|
|
<screen>
|
|
<![CDATA[
|
|
%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'
|
|
]]>
|
|
</screen>
|
|
</example>
|
|
<example>
|
|
<title><function>printf</function>: especificadores de string</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$s = 'monkey';
|
|
$t = 'many monkeys';
|
|
|
|
printf("[%s]\n", $s); // salida estándar de string
|
|
printf("[%10s]\n", $s); // justificación a la derecha con espacios
|
|
printf("[%-10s]\n", $s); // justificación a la izquierda con espacios
|
|
printf("[%010s]\n", $s); // rellenado con ceros también funciona sobre strings
|
|
printf("[%'#10s]\n", $s); // utiliza el caracter de relleno personalizado '#'
|
|
printf("[%10.10s]\n", $t); // justificación a la izquierda pero con un corte a los 10 caracteres
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
&example.outputs;
|
|
<screen>
|
|
<![CDATA[
|
|
[monkey]
|
|
[ monkey]
|
|
[monkey ]
|
|
[0000monkey]
|
|
[####monkey]
|
|
[many monke]
|
|
]]>
|
|
</screen>
|
|
</example>
|
|
<example>
|
|
<title><function>sprintf</function>: rellenado con ceros en integers</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$isodate = sprintf("%04d-%02d-%02d", $year, $month, $day);
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
<example>
|
|
<title><function>sprintf</function>: formato de moneda</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$money1 = 68.75;
|
|
$money2 = 54.35;
|
|
$money = $money1 + $money2;
|
|
// echo $money producirá "123.1";
|
|
$formatted = sprintf("%01.2f", $money);
|
|
// echo $formatted producirá "123.10"
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
<example>
|
|
<title><function>sprintf</function>: notación científica</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$number = 362525200;
|
|
|
|
echo sprintf("%.3e", $number); // produce 3.625e+8
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</refsect1>
|
|
|
|
<refsect1 role="seealso">
|
|
&reftitle.seealso;
|
|
<para>
|
|
<simplelist>
|
|
<member><function>printf</function></member>
|
|
<member><function>sscanf</function></member>
|
|
<member><function>fscanf</function></member>
|
|
<member><function>vsprintf</function></member>
|
|
<member><function>number_format</function></member>
|
|
</simplelist>
|
|
</para>
|
|
</refsect1>
|
|
|
|
</refentry>
|
|
|
|
<!-- Keep this comment at the end of the file
|
|
Local variables:
|
|
mode: sgml
|
|
sgml-omittag:t
|
|
sgml-shorttag:t
|
|
sgml-minimize-attributes:nil
|
|
sgml-always-quote-attributes:t
|
|
sgml-indent-step:1
|
|
sgml-indent-data:t
|
|
indent-tabs-mode:nil
|
|
sgml-parent-document:nil
|
|
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
|
sgml-exposed-tags:nil
|
|
sgml-local-catalogs:nil
|
|
sgml-local-ecat-files:nil
|
|
End:
|
|
vim600: syn=xml fen fdm=syntax fdl=2 si
|
|
vim: et tw=78 syn=sgml
|
|
vi: ts=1 sw=1
|
|
-->
|