PHP vsprintf() funktionen

Exempel

Skriv formaterad sträng till variabeln:

<?php
$number = 9;
$str = "Beijing";
$txt = vsprintf("Det finns 쥕joner cyklar i %s.", array($number, $str));
echo $txt;
?>

Kör en exempel

Definition och användning

vsprintf() funktionen skriver formaterad sträng till variabeln.

Verskillig från sprintf(), finns parametrarna i vsprintf() i en array. Array-elementen kommer att sättas in i huvudsträngen vid procenttecken (%). Funktionen körs stegvis. På det första %-tecknet läggs det första array-elementet in, på det andra %-tecknet läggs det andra array-elementet in, och så vidare.

Kommentar:Om det finns fler %-tecken än arg Om det finns flera %-tecken, måste du använda placeholder. Placeholder placeras efter % och består av ett nummer och "\$". Se exempel 2.

Tips:Relaterade funktioner:

Syntax

vsprintf(format,argarray)
Parameter Beskrivning
format

Obligatoriskt. Anger strängen och hur variablerna i den formateras.

Möjliga formatvärden:

  • %% - Återger en procenttecken %
  • %b - Binärtal
  • %c - ASCII-värde för tecken
  • %d - Dekadaltal med tecken (negativt, 0, positivt)
  • %e - Använd små bokstäver för vetenskaplig notation (t.ex. 1.2e+2)
  • %E - Använd stora bokstäver för vetenskaplig notation (t.ex. 1.2E+2)
  • 蒝ekadaltal utan tecken (minst 0)
  • %f - Flyttal (lokal inställning)
  • %F - Flyttal (inte lokalt inställt)
  • %g - Kortare %e och %f
  • %G - Kortare %E och %f
  • %o - Octaltal
  • %s - Sträng
  • %x - Hexadecimaltal (små bokstäver)
  • %X - Hexadecimaltal (stora bokstäver)

Ytterligare formatvärden. Obligatoriskt att placera mellan % och bokstav (t.ex. %.2f):

  • + (lägg till '+' eller '-' framför numret för att definiera positiv eller negativ tecken. Som standard markeras endast negativa tal, inte positiva)
  • ' (specificerar vad som används som fyllnad, standard är utrymme. Det måste användas tillsammans med breddspecifikatorn. Till exempel: '%'x20s (använd 'x' som fyllnad))
  • - (vänsterjustera variabelvärdet)
  • .[0-9] (specificerar minsta bredd för variabelvärdet)
  • .[0-9] (specificerar decimaler eller max stränglängd)

Kommentar:Om flera av de ovanstående formatvärdena används, måste de användas i den ordning som anges ovan och inte förvirras.

argarray Obligatoriskt. En array med parametrar som placeras in i format Platsen för %-tecknet i strängen.

Tekniska detaljer

Returvärde: Återger arrayvärdet i formaterad sträng.
PHP-version: 4.1.0+

Mer exempel

Exempel 1

Använd formatvärde %f:

<?php
$num1 = 123;
$num2 = 456;
$txt = vsprintf("%f%f",array($num1,$num2));
echo $txt;
?>

Kör en exempel

Exempel 2

Använd platshållare:

<?php
$number = 123;
$txt = vsprintf("med två decimaler:%1\$.2f<br>utan decimaler:%1\$u",array($number));
echo $txt;
?>

Kör en exempel

Exempel 3

Använd sprintf() för att demonstrera alla möjliga formatvärden:

<?php
$num1 = 123456789;
$num2 = -123456789;
$char = 50; // ASCII 字符 50 är 2
// 注释:格式值 "%%" 返回百分号
echo sprintf("%%b = %b",$num1)."<br>"; // 二进制数
echo sprintf("%%c = %c",$char)."<br>"; // ASCII 字符
echo sprintf("%%d = %d",$num1)."<br>"; // 带符号的十进制数
echo sprintf("%%d = %d",$num2)."<br>"; // 带符号的十进制数
echo sprintf("%%e = %e",$num1)."<br>"; // 科学计数法(小写)
echo sprintf("%%E = %E",$num1)."<br>"; // 科学计数法(大写)
echo sprintf("%鑾u",$num1)."<br>"; // 不带符号的十进制数(正)
echo sprintf("%鑾u",$num2)."<br>"; // 不带符号的十进制数(负)
echo sprintf("%%f = %f",$num1)."<br>"; // 浮点数(视本地设置)
echo sprintf("%%F = %F",$num1)."<br>"; // 浮点数(不视本地设置)
echo sprintf("%%g = %g",$num1)."<br>"; // 短于 %e 和 %f
echo sprintf("%%G = %G",$num1)."<br>"; // 短于 %E 和 %f
echo sprintf("%%o = %o",$num1)."<br>"; // 八进制数
echo sprintf("%%s = %s",$num1)."<br>"; // 字符串
echo sprintf("%%x = %x",$num1)."<br>"; // Hexadecimaltal (små bokstäver)
echo sprintf("%%X = %X",$num1)."<br>"; // Hexadecimaltal (stora bokstäver)
echo sprintf("%%+d = %+d",$num1)."<br>"; // Teckenanvändningssymbol (positiv)
echo sprintf("%%+d = %+d",$num2)."<br>"; // Teckenanvändningssymbol (negativ)
?>

Kör en exempel

Exempel 4

Demonstration av stränganvändningssymboler:

<?php
$str1 = "Hello";
$str2 = "Hello world!";
echo vsprintf("[%s]",array($str1))."<br>";
echo vsprintf("[%8s]",array($str1))."<br>";
echo vsprintf("[%-8s]",array($str1))."<br>";
echo vsprintf("[%08s]",array($str1))."<br>";
echo vsprintf("[%'*8s]",array($str1))."<br>";
echo vsprintf("[%8.8s]",array($str2))."<br>";
?>

Kör en exempel