การใช้sprintf ()นั้นสะอาดและปลอดภัยกว่ามากในการจัดรูปแบบสตริงของคุณ
ตัวอย่างเช่นเมื่อคุณจัดการกับตัวแปรอินพุตมันจะป้องกันความประหลาดใจที่ไม่คาดคิดโดยการระบุรูปแบบที่คาดไว้ล่วงหน้า (ตัวอย่างเช่นคุณคาดหวังว่าสตริง [ %s
] หรือหมายเลข [ %d
]) สิ่งนี้อาจช่วยได้ด้วยความเสี่ยงที่อาจเกิดขึ้นจากการฉีด SQLแต่จะไม่ป้องกันหากสตริงประกอบด้วยเครื่องหมายคำพูด
นอกจากนี้ยังช่วยในการจัดการกับลอยคุณสามารถระบุความแม่นยำหลัก (เช่น%.2f
) ซึ่งช่วยให้คุณประหยัดจากการใช้ฟังก์ชั่นการแปลง
ข้อดีอื่น ๆ คือภาษาการเขียนโปรแกรมที่สำคัญส่วนใหญ่มีการใช้งานของsprintf()
ตนเองดังนั้นเมื่อคุณคุ้นเคยกับมันแล้วจะใช้งานได้ง่ายกว่าแทนที่จะเรียนรู้ภาษาใหม่ (เช่นการเชื่อมโยงสตริงหรือแปลงลอย)
โดยสรุปเป็นแนวปฏิบัติที่ดีที่จะใช้เพื่อให้มีโค้ดที่สะอาดและอ่านได้ง่ายขึ้น
ตัวอย่างเช่นดูตัวอย่างจริงด้านล่าง:
$insert .= "('".$tr[0]."','".$tr[0]."','".$tr[0]."','".$tr[0]."'),";
หรือตัวอย่างง่ายๆที่พิมพ์เช่น'1','2','3','4'
:
print "foo: '" . $a . "','" . $b . "'; bar: '" . $c . "','" . $d . "'" . "\n";
และพิมพ์ด้วยสตริงที่จัดรูปแบบ:
printf("foo: '%d','%d'; bar: '%d','%d'\n", $a, $b, $c, $d);
โดยที่printf()
จะเทียบเท่าsprintf()
แต่ส่งเอาต์พุตสตริงที่จัดรูปแบบแทนที่จะส่งคืน (ไปยังตัวแปร)
ข้อใดอ่านได้มากกว่า