Écrivez la chaîne formatée dans une variable :
<?php$number = 9;$str = "Pékin";$txt = vsprintf("Il y a %u millions de vélos dans %s.",array($number,$str));echo $txt;?>La fonction vsprintf() écrit la chaîne formatée dans une variable.
Contrairement à sprintf(), les arguments de vsprintf() sont dans un tableau. Les éléments du tableau seront insérés dans la chaîne principale au signe de pourcentage (%). Cette fonction est exécutée étape par étape. Au premier signe %, le premier élément du tableau est inséré, au deuxième signe %, le deuxième élément du tableau est inséré, et ainsi de suite.
Remarque : S'il y a plus de symboles % que de paramètres arg, vous devez utiliser des espaces réservés. L'espace réservé est inséré après le symbole % et se compose d'un nombre et de "$". Voir l'exemple 2.
Astuce : Fonctions associées : fprintf(), vfprintf(), printf(), sprintf() et vprintf()
vsprintf( format,argarray )
paramètre | décrire |
---|---|
format | Requis. Spécifie une chaîne et comment formater les variables qu'elle contient. Valeurs de format possibles : %% - renvoie un signe de pourcentage % %b - nombre binaire %c - le caractère correspondant à la valeur ASCII %d - Nombre décimal avec signe (négatif, 0, positif) %e - Utiliser la notation scientifique en minuscules (par exemple 1.2e+2) %E - Utiliser la notation scientifique en majuscules (par exemple 1.2E+2) %u - Nombre décimal sans signe (supérieur ou égal à 0) %f - nombre à virgule flottante (paramètre local) %F - nombre à virgule flottante (paramètre non natif) %g - la version plus courte de %e et %f %G - %E et %f plus courts %o - nombre octal %s - chaîne %x - Nombre hexadécimal (lettres minuscules) %X - nombre hexadécimal (lettres majuscules) Valeurs de format supplémentaires. Doit être placé entre % et une lettre (par exemple %.2f) : + (Ajoutez + ou - devant un nombre pour définir le signe du nombre. Par défaut, seuls les nombres négatifs sont marqués, et les nombres positifs ne sont pas marqués) ' (Spécifie ce qu'il faut utiliser comme remplissage, par défaut des espaces. Il doit être utilisé avec un spécificateur de largeur. Par exemple : %'x20s (utilisez "x" comme remplissage)) - (valeur variable de réglage gauche) [0-9] (spécifie la largeur minimale de la valeur de la variable) .[0-9] (spécifie le nombre de décimales ou la longueur maximale de la chaîne) Remarque : Si plusieurs valeurs de format ci-dessus sont utilisées, elles doivent être utilisées dans l'ordre ci-dessus et ne peuvent pas être perturbées. |
Argarray | Requis. Un tableau avec des paramètres qui seront insérés dans la chaîne de format aux symboles %. |
Valeur de retour : | Renvoie une valeur de tableau sous forme de chaîne formatée. |
---|---|
Version PHP : | 4.1.0+ |
Utilisez la valeur de format %f :
<?php$num1 = 123;$num2 = 456;$txt = vsprintf("%f%f",array($num1,$num2));echo $txt;?>Utilisez des espaces réservés :
<?php$number = 123;$txt = vsprintf("Avec 2 décimales : %1$.2f<br>Sans décimales : %1$u",array($number));echo $txt;?>Utilisez sprintf() pour démontrer toutes les valeurs de format possibles :
<?php$num1 = 123456789;$num2 = -123456789;$char = 50; // Le caractère ASCII 50 est 2// Remarque : La valeur de format "%%" renvoie un pourcentage signecho sprintf("%%b = % b",$num1)."<br>"; // Nombre binaireecho sprintf("%%c = %c",$char)."<br>"; // Le caractère ASCIIecho sprintf("%%d = %d",$num1)."<br>"; // Numéro décimal signéecho sprintf("%% d = %d",$num2)."<br>"; // Nombre décimal signéecho sprintf("%%e = %e",$num1)."<br>"; // Notation scientifique (minuscules)echo sprintf("%%E = %E",$num1)."<br>"; // Notation scientifique (majuscules)echo sprintf("%%u = %u",$num1)."< br>"; // Nombre décimal non signé (positif)echo sprintf("%%u = %u",$num2)."<br>"; // Nombre décimal non signé (négatif)echo sprintf("%%f = %f",$num1)."<br>"; // Nombre à virgule flottante (compatible avec les paramètres locaux)echo sprintf("%%F = %F",$num1)."< br>"; // Nombre à virgule flottante (non compatible avec les paramètres locaux)echo sprintf("%%g = %g",$num1)."<br>"; // Plus court de %e et %fecho sprintf("%%G = %G",$num1)."<br>"; // Plus court de %E et %fecho sprintf("%%o = %o",$num1)."<br>" ; // Nombre octalecho sprintf("%%s = %s",$num1)."<br>"; // Stringecho sprintf("%%x = %x",$num1)."<br>"; // Nombre hexadécimal (minuscules)echo sprintf("%%X = %X",$num1)."<br>" // Nombre hexadécimal (majuscules)echo sprintf("%%+d = %+d", $num1)."<br>"; // Spécificateur de signe (positif)echo sprintf("%%+d = %+d",$num2)."<br>"; (négatif) ?>Démonstration des spécificateurs de chaînes :
<?php$str1 = "Bonjour";$str2 = "Bonjour tout le monde !";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>" ?>