Usando sprintf () é muito mais limpo e seguro para formatar sua string.
Por exemplo, quando você lida com variáveis de entrada, evita surpresas inesperadas especificando o formato esperado com antecedência (por exemplo, que você está esperando a string [ %s
] ou o número [ %d
]). Isso pode potencialmente ajudar com o possível risco de injeção de SQL , mas não impedirá que a string contenha aspas.
Também ajuda a lidar com carros alegóricos, você pode especificar explicitamente a precisão do dígito (por exemplo, %.2f
) que evita o uso de funções de conversão.
As outras vantagens são que a maioria das principais linguagens de programação possui sua própria implementação de sprintf()
. Assim, quando você se familiarizar com ela, fica ainda mais fácil usar, em vez de aprender uma nova linguagem (como concatenar seqüências de caracteres ou converter floats).
Em resumo, é uma boa prática usar para ter um código mais limpo e legível.
Por exemplo, veja o exemplo real abaixo :
$insert .= "('".$tr[0]."','".$tr[0]."','".$tr[0]."','".$tr[0]."'),";
Ou algum exemplo simples que imprime, por exemplo '1','2','3','4'
:
print "foo: '" . $a . "','" . $b . "'; bar: '" . $c . "','" . $d . "'" . "\n";
e impressão com sequência formatada:
printf("foo: '%d','%d'; bar: '%d','%d'\n", $a, $b, $c, $d);
onde printf()
é equivalente sprintf()
, mas gera uma sequência de caracteres formatada em vez de retorná-la (para a variável).
Qual é mais legível?