1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-26 08:42:13 +01:00
Files
archived-doc-ru/reference/strings/functions/sprintf.xml
2023-05-09 23:19:20 +03:00

255 lines
6.8 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: f134250210702ab6280ab303b846679177d39f14 Maintainer: shein Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.sprintf" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>sprintf</refname>
<refpurpose>Возвращает отформатированную строку</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>string</type><methodname>sprintf</methodname>
<methodparam><type>string</type><parameter>format</parameter></methodparam>
<methodparam rep="repeat"><type>mixed</type><parameter>values</parameter></methodparam>
</methodsynopsis>
<para>
Возвращает строку, созданную с использованием строки формата
<parameter>format</parameter>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
&strings.parameter.format;
<varlistentry>
<term><parameter>values</parameter></term>
<listitem>
<para>
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Возвращает строку, отформатированную в соответствии с форматом
<parameter>format</parameter>.
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
&strings.errors.sprintf;
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
&strings.changelog.sprintf;
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<example>
<title>Argument swapping</title>
<para>
Строка формата поддерживает нумерацию и перемешивание аргументов.
</para>
<programlisting role="php">
<![CDATA[
<?php
$num = 5;
$location = 'tree';
$format = 'There are %d monkeys in the %s';
echo sprintf($format, $num, $location);
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
There are 5 monkeys in the tree
]]>
</screen>
<para>
Теперь представим, что строка форматирования задаётся в стороннем файле.
Это обычная практика при необходимости поддержки нескольких языков.
Представим, что строка была переписана таким образом:
</para>
<programlisting role="php">
<![CDATA[
<?php
$format = 'The %s contains %d monkeys';
echo sprintf($format, $num, $location);
?>
]]>
</programlisting>
<para>
Упс! У нас проблема - порядок спецификаторов перестал соответствовать
порядку аргументов. Так как нам очень не хочется менять код каждый
раз, когда меняется формат строки, то мы можем использовать
нумерованные аргументы:
</para>
<programlisting role="php">
<![CDATA[
<?php
$format = 'The %2$s contains %1$d monkeys';
echo sprintf($format, $num, $location);
?>
]]>
</programlisting>
<para>
Дополнительным приятным моментом является то, что мы можем
использовать один параметр для нескольких подстановок.
</para>
<programlisting role="php">
<![CDATA[
<?php
$format = 'The %2$s contains %1$d monkeys.
That\'s a nice %2$s full of %1$d monkeys.';
echo sprintf($format, $num, $location);
?>
]]>
</programlisting>
<para>
При использовании нумерованных аргументов,
<emphasis>спецификатор позиции</emphasis> <literal>n$</literal> должен
стоять сразу же за символом процента (<literal>%</literal>), до любого
другого спецификатора, как показано ниже.
</para>
</example>
<example>
<title>Использование символа заполнения</title>
<programlisting role="php">
<![CDATA[
<?php
echo sprintf("%'.9d\n", 123);
echo sprintf("%'.09d\n", 123);
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
......123
000000123
]]>
</screen>
</example>
<example>
<title>Спецификатор позиции в комбинации с другими спецификаторами</title>
<programlisting role="php">
<![CDATA[
<?php
$format = 'The %2$s contains %1$04d monkeys';
echo sprintf($format, $num, $location);
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
The tree contains 0005 monkeys
]]>
</screen>
</example>
<example>
<title><function>sprintf</function>: целое с лидирующими нулями</title>
<programlisting role="php">
<![CDATA[
<?php
$isodate = sprintf("%04d-%02d-%02d", $year, $month, $day);
?>
]]>
</programlisting>
</example>
<example>
<title><function>sprintf</function>: форматирование денежных единиц</title>
<programlisting role="php">
<![CDATA[
<?php
$money1 = 68.75;
$money2 = 54.35;
$money = $money1 + $money2;
echo $money;
echo "\n";
$formatted = sprintf("%01.2f", $money);
echo $formatted;
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
123.1
123.10
]]>
</screen>
</example>
<example>
<title><function>sprintf</function>: научная нотация</title>
<programlisting role="php">
<![CDATA[
<?php
$number = 362525200;
echo sprintf("%.3e", $number);
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
3.625e+8
]]>
</screen>
</example>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>printf</function></member>
<member><function>fprintf</function></member>
<member><function>vprintf</function></member>
<member><function>vsprintf</function></member>
<member><function>vfprintf</function></member>
<member><function>sscanf</function></member>
<member><function>fscanf</function></member>
<member><function>number_format</function></member>
<member><function>date</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
-->