1
0
mirror of https://github.com/php/doc-de.git synced 2026-03-24 07:12:15 +01:00
Files
Martin Samesch dde81ed6aa Sync with EN
2025-05-21 11:46:46 +02:00

284 lines
6.5 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 45042fef652f1b4e904e809fcbfcf31f6c60670b Maintainer: sammywg Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.sprintf" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>sprintf</refname>
<refpurpose>Gibt einen formatierten String zurück</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>
Gibt eine anhand des Formatierungs-Strings <parameter>format</parameter>
gebildete Zeichenkette zurück.
</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>
Gibt eine anhand des Formatierungs-Strings <parameter>format</parameter>
gebildete Zeichenkette zurück.
</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>Argumente tauschen</title>
<para>
Der Formatstring unterstützt nummerierte Argumente und kann daher auch
ihre Position bestimmen (argument numbering/swapping).
</para>
<programlisting role="php">
<![CDATA[
<?php
$anzahl = 5;
$ort = 'Baum';
$format = 'Es sind %d Affen auf dem %s';
echo sprintf($format, $anzahl, $ort);
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
Es sind 5 Affen auf dem Baum
]]>
</screen>
</example>
<para>
Aber nehmen wir einmal an, dass wir den Formatstring in einer separaten
Datei erstellen, da wir ihn internationalisieren wollen und deshalb wie
folgt umschreiben:
</para>
<example>
<title>Falsche Reihenfolge der Argumente</title>
<para>
Der Formatstring unterstützt die Nummerierung/Vertauschung von Argumenten.
</para>
<programlisting role="php">
<![CDATA[
<?php
$anzahl = 5;
$ort = 'Baum';
$format = 'Auf dem %s sind %d Affen';
echo sprintf($format, $anzahl, $ort);
?>
]]>
</programlisting>
</example>
<para>
Nun haben wir ein Problem. Die Reihenfolge der Platzhalter im Formatstring
entspricht nicht mehr der Reihenfolge der Argumente im Code. Wir würden gern
den Code belassen wie er ist und einfach im Formatstring angeben, auf welche
Argumente sich die Platzhalter beziehen.
Wir würden dann den Formatstring wie folgt schreiben:
</para>
<example>
<title>Verwenden der Reihenfolge bei Platzhaltern</title>
<programlisting role="php">
<![CDATA[
<?php
$anzahl = 5;
$ort = 'Baum';
$format = 'Auf dem %2$s sind %1$d Affen';
echo sprintf($format, $anzahl, $ort);
?>
]]>
</programlisting>
</example>
<para>
Ein weiterer Vorteil ist, dass die Platzhalter wiederholt werden
können, ohne mehr Argumente im Code hinzufügen zu müssen.
</para>
<example>
<title>Platzhalter mehrfach verwenden</title>
<programlisting role="php">
<![CDATA[
<?php
$anzahl = 5;
$ort = 'Baum';
$format = 'Auf dem %2$s sind %1$d Affen.
%1$d Affen sind ziemlich viel für einen %2$s.';
echo sprintf($format, $anzahl, $ort);
?>
]]>
</programlisting>
</example>
<para>
Wenn Argumente vertauscht werden, muss die
<literal>n$</literal>-<emphasis>Positionsangabe</emphasis> direkt nach dem
Prozentzeichen (<literal>%</literal>) folgen, vor jeglichen anderen Angaben,
wie unten zu sehen ist.
</para>
<example>
<title>Angabe von Füllzeichen</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>Positionstausch mit weiteren Spezifikatoren</title>
<programlisting role="php">
<![CDATA[
<?php
$anzahl = 5;
$ort = 'Baum';
$format= 'Auf dem %2$s sind %1$04d Affen';
echo sprintf($format, $anzahl, $ort);
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
Auf dem Baum sind 0005 Affen.
]]>
</screen>
</example>
<example>
<title><function>sprintf</function>: Mit Nullen aufgefüllte Integer</title>
<programlisting role="php">
<![CDATA[
<?php
$jahr = 2005;
$monat = 5;
$tag = 6;
$isodatum = sprintf("%04d-%02d-%02d", $jahr, $monat, $tag);
?>
]]>
</programlisting>
</example>
<example>
<title><function>sprintf</function>: Währungsformatierung</title>
<programlisting role="php">
<![CDATA[
<?php
$betrag1 = 68.75;
$betrag2 = 54.35;
$summe = $betrag1 + $betrag2;
echo $summe, PHP_EOL;
$formatiert = sprintf("%01.2f", $summe);
echo $formatiert, PHP_EOL;
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
123.1
123.10
]]>
</screen>
</example>
<example>
<title><function>sprintf</function>: Wissenschaftliche Notation</title>
<programlisting role="php">
<![CDATA[
<?php
$zahl = 362525200;
echo sprintf("%.3e", $zahl), PHP_EOL;
?>
]]>
</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
-->