Utilisation de sprintf () est beaucoup plus propre et plus sûre pour formater votre chaîne.
Par exemple, lorsque vous traitez avec des variables d'entrée, cela évite les surprises inattendues en spécifiant à l'avance le format attendu (par exemple, que vous attendez la chaîne [ %s
] ou le nombre [ %d
]). Cela pourrait potentiellement aider avec le risque possible d' injection SQL , mais cela n'empêchera pas si la chaîne se compose de guillemets.
Cela aide également à traiter les flottants, vous pouvez spécifier explicitement la précision des chiffres (par exemple %.2f
) qui vous évite d'utiliser les fonctions de conversion.
L'autre avantage est que la plupart des principaux langages de programmation ont leur propre implémentation de sprintf()
, donc une fois que vous vous êtes familiarisé avec celui-ci, il est encore plus facile à utiliser, plutôt que d'apprendre un nouveau langage (comme comment concaténer des chaînes ou convertir les flottants).
En résumé, c'est une bonne pratique à utiliser afin d'avoir un code plus propre et plus lisible.
Par exemple, voyez l' exemple réel ci-dessous :
$insert .= "('".$tr[0]."','".$tr[0]."','".$tr[0]."','".$tr[0]."'),";
Ou un exemple simple qui imprime par exemple '1','2','3','4'
:
print "foo: '" . $a . "','" . $b . "'; bar: '" . $c . "','" . $d . "'" . "\n";
et impression avec une chaîne formatée:
printf("foo: '%d','%d'; bar: '%d','%d'\n", $a, $b, $c, $d);
où printf()
est équivalent à sprintf()
, mais il génère une chaîne formatée au lieu de la renvoyer (à la variable).
Lequel est le plus lisible?