Sử dụng sprintf () sẽ sạch hơn và an toàn hơn để định dạng chuỗi của bạn.
Ví dụ: khi bạn đang xử lý các biến đầu vào, nó sẽ ngăn chặn những bất ngờ không mong muốn bằng cách chỉ định trước định dạng dự kiến (ví dụ: bạn đang mong đợi chuỗi [ %s
] hoặc số [ %d
]). Điều này có khả năng giúp giảm nguy cơ SQL SQL , nhưng sẽ không ngăn được nếu chuỗi bao gồm dấu ngoặc kép.
Nó cũng giúp xử lý các float, bạn có thể chỉ định rõ ràng độ chính xác của chữ số (ví dụ %.2f
) giúp bạn tiết kiệm khi sử dụng các hàm chuyển đổi.
Ưu điểm khác là hầu hết các ngôn ngữ lập trình chính đều có cách triển khai riêng sprintf()
, vì vậy khi bạn đã quen với nó, việc sử dụng nó sẽ dễ dàng hơn, thay vì học một ngôn ngữ mới (như cách nối chuỗi hoặc chuyển đổi phao).
Tóm lại, đó là một cách thực hành tốt để sử dụng để có mã dễ đọc và dễ đọc hơn.
Ví dụ, xem ví dụ thực tế dưới đây :
$insert .= "('".$tr[0]."','".$tr[0]."','".$tr[0]."','".$tr[0]."'),";
Hoặc một số ví dụ đơn giản mà in, ví dụ '1','2','3','4'
:
print "foo: '" . $a . "','" . $b . "'; bar: '" . $c . "','" . $d . "'" . "\n";
và in với chuỗi định dạng:
printf("foo: '%d','%d'; bar: '%d','%d'\n", $a, $b, $c, $d);
nơi printf()
tương đương vớisprintf()
, nhưng nó đưa ra một chuỗi được định dạng thay vì trả về nó (cho biến).
Cái nào dễ đọc hơn?