L'uso di sprintf () è molto più pulito e sicuro per formattare la stringa.
Ad esempio, quando hai a che fare con variabili di input, previene sorprese inattese specificando in anticipo il formato previsto (ad esempio, che ti aspetti la stringa [ %s
] o il numero [ %d
]). Questo potrebbe potenzialmente aiutare con il possibile rischio di iniezione SQL , ma non impedirà se la stringa è composta da virgolette.
Aiuta anche a gestire i float, puoi specificare esplicitamente la precisione delle cifre (ad es. %.2f
) Che ti salva dall'uso delle funzioni di conversione.
L'altro vantaggio è che la maggior parte dei principali linguaggi di programmazione ne ha una propria implementazione sprintf()
, quindi una volta acquisita familiarità con esso, è ancora più facile da usare, piuttosto che imparare un nuovo linguaggio (come come concatenare stringhe o convertire i float).
In breve, è una buona pratica usare per avere un codice più pulito e più leggibile.
Ad esempio, vedi l' esempio reale di seguito :
$insert .= "('".$tr[0]."','".$tr[0]."','".$tr[0]."','".$tr[0]."'),";
O qualche semplice esempio che stampa ad esempio '1','2','3','4'
:
print "foo: '" . $a . "','" . $b . "'; bar: '" . $c . "','" . $d . "'" . "\n";
e stampa con stringa formattata:
printf("foo: '%d','%d'; bar: '%d','%d'\n", $a, $b, $c, $d);
dove printf()
equivale a sprintf()
, ma genera una stringa formattata invece di restituirla (alla variabile).
Qual è più leggibile?