Die Verwendung von sprintf () ist viel sauberer und sicherer beim Formatieren Ihrer Zeichenfolge.
Wenn Sie beispielsweise mit Eingabevariablen arbeiten, werden unerwartete Überraschungen verhindert, indem Sie das erwartete Format im Voraus angeben (z. B. dass Sie Zeichenfolge [ %s
] oder die Zahl [ %d
] erwarten ). Dies könnte möglicherweise das mögliche Risiko einer SQL-Injection erhöhen , verhindert jedoch nicht, dass Zeichenfolgen aus Anführungszeichen bestehen.
Es hilft auch beim Umgang mit Floats. Sie können die Zifferngenauigkeit (z. B. %.2f
) explizit angeben, um die Verwendung von Konvertierungsfunktionen zu vermeiden.
Der andere Vorteil ist, dass die meisten wichtigen Programmiersprachen eine eigene Implementierung sprintf()
haben. Sobald Sie sich damit vertraut gemacht haben, ist die Verwendung noch einfacher, als das Erlernen einer neuen Sprache (z. B. das Verketten von Zeichenfolgen oder das Konvertieren der Floats).
Zusammenfassend ist es eine gute Praxis, einen saubereren und besser lesbaren Code zu erhalten.
Siehe zum Beispiel das folgende reale Beispiel :
$insert .= "('".$tr[0]."','".$tr[0]."','".$tr[0]."','".$tr[0]."'),";
Oder ein einfaches Beispiel, das zB druckt '1','2','3','4'
:
print "foo: '" . $a . "','" . $b . "'; bar: '" . $c . "','" . $d . "'" . "\n";
und Drucken mit formatierter Zeichenfolge:
printf("foo: '%d','%d'; bar: '%d','%d'\n", $a, $b, $c, $d);
Dabei printf()
entspricht sprintf()
es, gibt jedoch eine formatierte Zeichenfolge aus, anstatt sie (an die Variable) zurückzugeben.
Welches ist besser lesbar?