ตัวอย่าง Printf PHP จัดรูปแบบฟังก์ชันเอาต์พุตใน PHP การสร้างสตริงรูปแบบ

( PHP 4, PHP 5, PHP 7)

วิ่งเร็ว - ส่งกลับสตริงที่จัดรูปแบบ

รายการพารามิเตอร์

สตริงรูปแบบประกอบด้วยคำสั่งตั้งแต่ศูนย์ขึ้นไป: อักขระธรรมดา (ยกเว้น % ) ซึ่งจะถูกคัดลอกโดยตรงไปยังสตริงผลลัพธ์ และ ตัวอธิบายการเปลี่ยนแปลงซึ่งแต่ละรายการจะถูกแทนที่ด้วยพารามิเตอร์ตัวใดตัวหนึ่ง สิ่งนี้ใช้ได้กับทั้งสองอย่าง วิ่ง()และเพื่อ พิมพ์f().

ตัวระบุการแปลงแต่ละรายการประกอบด้วยเครื่องหมายเปอร์เซ็นต์ ( % ) ตามด้วยองค์ประกอบเพิ่มเติมอย่างน้อยหนึ่งรายการ (ตามลำดับที่แสดงไว้ที่นี่):

  1. ไม่จำเป็น อธิบายตัวละครระบุว่าจะใช้เครื่องหมาย (- หรือ +) กับตัวเลขอย่างไร ตามค่าเริ่มต้น ระบบจะใช้เฉพาะเครื่องหมายลบหากตัวเลขเป็นลบ ตัวระบุนี้ทำให้ตัวเลขบวกแสดงเครื่องหมายบวกด้วยและถูกเพิ่มใน PHP 4.3.0
  2. ไม่จำเป็น ตัวระบุช่องว่างภายในซึ่งระบุอักขระที่จะใช้เพื่อขยายผลลัพธ์ตามความยาวที่ต้องการ อาจเป็นพื้นที่หรือ 0 - ค่าเริ่มต้นคือช่องว่าง " สามารถระบุอักขระสำรองได้โดยใช้เครื่องหมายคำพูดเดี่ยว (
  3. ไม่จำเป็น - ดูตัวอย่างด้านล่างตัวอธิบายการจัดตำแหน่ง - ซึ่งระบุการจัดตำแหน่งซ้ายหรือขวา โดยค่าเริ่มต้นจะจัดชิดขวา
  4. ใช้สำหรับการจัดตำแหน่งด้านซ้าย หมายเลขเสริมตัวระบุความกว้าง
  5. ไม่จำเป็น ซึ่งระบุจำนวนอักขระขั้นต่ำที่ผลลัพธ์ของการแปลงนี้จะมีตัวอธิบายความแม่นยำ
  6. ระบุเป็นจุด (".") ตามด้วยสตริงทศนิยมซึ่งระบุจำนวนตำแหน่งทศนิยมที่จะแสดงสำหรับตัวเลขทศนิยม เมื่อใช้กับสตริง ตัวระบุนี้จะทำหน้าที่เป็นจุดตัดที่กำหนดจำนวนอักขระสูงสุด คุณยังสามารถระบุสัญลักษณ์ที่ใช้เติมตัวเลขระหว่างจุดและตัวเลขได้ตัวระบุประเภท

    • % ซึ่งระบุวิธีจัดการกับประเภทข้อมูลของอาร์กิวเมนต์ ประเภทที่ถูกต้อง:
    • - สัญลักษณ์เปอร์เซ็นต์ อาร์กิวเมนต์ไม่ได้ใช้
    • - อาร์กิวเมนต์จะถือเป็นจำนวนเต็มและเอาต์พุตเป็นเลขฐานสอง
    • - อาร์กิวเมนต์จะถือเป็นจำนวนเต็มและเอาต์พุตเป็นอักขระที่มีรหัส ASCII ที่สอดคล้องกัน
    • - อาร์กิวเมนต์จะถือเป็นจำนวนเต็มและเอาต์พุตเป็นเลขทศนิยมที่ลงนาม- อาร์กิวเมนต์ถูกตีความว่าเป็นตัวเลขในรูปแบบทางวิทยาศาสตร์ (เช่น 1.2e+2)
    • ตัวระบุความแม่นยำระบุจำนวนตำแหน่งทศนิยมตั้งแต่ PHP 5.2.1 ในเวอร์ชันก่อนหน้านี้ ระบุจำนวนตัวเลขนัยสำคัญ (เครื่องหมายน้อยกว่าหนึ่งเครื่องหมาย)อี - คล้ายกัน%อี
    • แต่ใช้อักษรตัวพิมพ์ใหญ่ (เช่น 1.2E+2)
    • - อาร์กิวเมนต์จะถือเป็นตัวเลขทศนิยมและส่งออกขึ้นอยู่กับโลแคลด้วยเอฟ
    • - อาร์กิวเมนต์จะถือเป็นตัวเลขทศนิยมและเป็นเอาต์พุตด้วย แต่ไม่ขึ้นอยู่กับโลแคล - คล้ายกันใช้งานได้ตั้งแต่ PHP 4.3.10 และ PHP 5.0.3 .
    • และ%ฉ ใช้งานได้ตั้งแต่ PHP 4.3.10 และ PHP 5.0.3 .
    • - เลือกรายการที่สั้นที่สุดจาก%อี
    • โอ- อาร์กิวเมนต์จะถือเป็นจำนวนเต็มและเอาต์พุตเป็นเลขฐานแปด
    • - อาร์กิวเมนต์จะถือเป็นสตริง
    • คุณ- อาร์กิวเมนต์จะถือเป็นจำนวนเต็มและเอาต์พุตเป็นเลขทศนิยมที่ไม่ได้ลงนาม
    • x- อาร์กิวเมนต์จะถือเป็นจำนวนเต็มและเอาต์พุตเป็นเลขฐานสิบหก (ตัวพิมพ์เล็ก)

เอ็กซ์

- อาร์กิวเมนต์จะถือเป็นจำนวนเต็มและเอาต์พุตเป็นเลขฐานสิบหก (เป็นตัวพิมพ์ใหญ่)
ตัวแปรจะถูกแปลงเป็นประเภทที่เหมาะสมสำหรับตัวระบุ: ประเภทการจัดการ
พิมพ์ โอ
ตัวระบุ - อาร์กิวเมนต์จะถือเป็นจำนวนเต็มและเอาต์พุตเป็นอักขระที่มีรหัส ASCII ที่สอดคล้องกัน, , - อาร์กิวเมนต์จะถือเป็นจำนวนเต็มและเอาต์พุตเป็นเลขฐานสอง, - เลือกรายการที่สั้นที่สุดจาก, คุณ, x, - สัญลักษณ์เปอร์เซ็นต์ อาร์กิวเมนต์ไม่ได้ใช้
เชือก - อาร์กิวเมนต์จะถือเป็นตัวเลขทศนิยมและเป็นเอาต์พุตด้วย แต่ไม่ขึ้นอยู่กับโลแคล, และ, - อาร์กิวเมนต์จะถือเป็นจำนวนเต็มและเอาต์พุตเป็นเลขทศนิยมที่ลงนาม, ตัวระบุความแม่นยำระบุจำนวนตำแหน่งทศนิยมตั้งแต่ PHP 5.2.1 ในเวอร์ชันก่อนหน้านี้ ระบุจำนวนตัวเลขนัยสำคัญ (เครื่องหมายน้อยกว่าหนึ่งเครื่องหมาย), แต่ใช้อักษรตัวพิมพ์ใหญ่ (เช่น 1.2E+2), - อาร์กิวเมนต์จะถือเป็นตัวเลขทศนิยมและส่งออกขึ้นอยู่กับโลแคลด้วย

จำนวนเต็ม

สองเท่า

ความสนใจ

การพยายามใช้การรวมกันของตัวระบุสตริงและความกว้างกับการเข้ารหัสที่ต้องใช้มากกว่าหนึ่งไบต์ต่ออักขระอาจให้ผลลัพธ์ที่ไม่คาดคิด

สตริงรูปแบบรองรับการกำหนดหมายเลขและการเรียงลำดับพารามิเตอร์ใหม่ ตัวอย่างเช่น:
ตัวอย่าง #1 การเปลี่ยนลำดับของพารามิเตอร์

$num = 5 ; $location = "ต้นไม้" ;;

?>

$รูปแบบ=

"มีลิง %d ตัวนั่งอยู่บน %s"

รหัสนี้จะส่งออก "ลิง 5 ตัวนั่งอยู่บนต้นไม้" ทีนี้ลองจินตนาการว่าสตริงรูปแบบนั้นอยู่ในไฟล์แยกต่างหาก ซึ่งจากนั้นจะถูกแปลเป็นภาษาอื่น และเราเขียนมันใหม่ดังนี้: ตัวอย่าง #2 การเปลี่ยนลำดับของพารามิเตอร์;
$รูปแบบ=
?>

"มีลิง %d ตัวนั่งอยู่บน %s"

echo sprintf ($รูปแบบ, $num, $location);

รหัสนี้จะส่งออก "ลิง 5 ตัวนั่งอยู่บนต้นไม้" ทีนี้ลองจินตนาการว่าสตริงรูปแบบนั้นอยู่ในไฟล์แยกต่างหาก ซึ่งจากนั้นจะถูกแปลเป็นภาษาอื่น และเราเขียนมันใหม่ดังนี้: เกิดปัญหา: ลำดับของตัวระบุการแปลงไม่ตรงกับลำดับของอาร์กิวเมนต์ เราไม่ต้องการเปลี่ยนโค้ด และเราต้องระบุว่าอาร์กิวเมนต์ใดที่สอดคล้องกับตัวระบุการแปลงใด;
$รูปแบบ=
?>

ตัวอย่าง #3 การเปลี่ยนลำดับของพารามิเตอร์

"มีลิง %1$d ตัวนั่งอยู่บน %2$s"

รหัสนี้จะส่งออก "ลิง 5 ตัวนั่งอยู่บนต้นไม้" ทีนี้ลองจินตนาการว่าสตริงรูปแบบนั้นอยู่ในไฟล์แยกต่างหาก ซึ่งจากนั้นจะถูกแปลเป็นภาษาอื่น และเราเขียนมันใหม่ดังนี้: การกำหนดหมายเลขอาร์กิวเมนต์มีประโยชน์อีกอย่างหนึ่ง: ช่วยให้คุณสามารถพิมพ์อาร์กิวเมนต์เดียวกันได้หลายครั้งโดยไม่ต้องส่งพารามิเตอร์เพิ่มเติมไปยังฟังก์ชัน
ตัวอย่าง #4 การเปลี่ยนลำดับของพารามิเตอร์
;
$รูปแบบ=
?>

"มีลิง %1$d ตัวนั่งอยู่บน %2$s เป็นเรื่องดีที่มี %2$s นั่งบนลิง %1$d ตัว" เมื่อเปลี่ยนลำดับของพารามิเตอร์ตัวบ่งชี้ตำแหน่ง % ) ก่อนคำอธิบายอื่นๆ ทั้งหมด ดังแสดงในตัวอย่างด้านล่าง

ตัวอย่างที่ 5 การระบุอักขระเสริม

เสียงสะท้อนวิ่ง ("%".9d\n" , 123 );
เสียงสะท้อนวิ่ง ("%".09d\n" , 123 );
?>

123 000000123

ตัวอย่างที่ 6 การใช้ตัวระบุตำแหน่งและร่วมกับคำอธิบายอื่นๆ

รหัสนี้จะส่งออก "ลิง 5 ตัวนั่งอยู่บนต้นไม้" ทีนี้ลองจินตนาการว่าสตริงรูปแบบนั้นอยู่ในไฟล์แยกต่างหาก ซึ่งจากนั้นจะถูกแปลเป็นภาษาอื่น และเราเขียนมันใหม่ดังนี้: "มีลิง %1$04d ตัวนั่งอยู่บน %2$s";
$รูปแบบ=
?>

ผลลัพธ์ของการรันตัวอย่างนี้:

0005 ลิงนั่งอยู่บนต้นไม้

ความคิดเห็น:

มีความพยายามที่จะใช้ตัวระบุตำแหน่งที่มากกว่า PHP_INT_MAXจะทำให้ฟังก์ชันสร้างคำเตือน วิ่ง() .

จำนวนเต็ม

ที่ - อาร์กิวเมนต์จะถือเป็นจำนวนเต็มและเอาต์พุตเป็นเลขฐานสองตัวระบุประเภทจะละเว้นช่องว่างภายในและความกว้าง

ส่งกลับค่า

ส่งคืนสตริงที่จัดรูปแบบตามรูปแบบ

ตัวอย่าง

ตัวอย่าง #7 วิ่ง(): เติมด้วยศูนย์

$n = 43951789 ;
$u = - 43951789 ;
$ซี = 65 ; // ASCII 65 คือ "A"

// โปรดทราบว่า double %% จะถูกส่งออกเป็น single "%"
printf ("%%b = "%b"\n" , $n ); // การเป็นตัวแทนไบนารี
printf ("%%c = "%c"\n" , $c ); // พิมพ์อักขระ ASCII คล้ายกับฟังก์ชัน chr()
printf ("%%d = "%d"\n" , $n ); // จำนวนเต็มปกติ
printf ("%%e = "%e"\n" , $n ); // สัญกรณ์ทางวิทยาศาสตร์
printf ("%%u = "%u"\n" , $n ); // การแสดงจำนวนเต็มบวกที่ไม่ได้ลงนาม
printf ("%%u = "%u"\n" , $u ); // การแสดงจำนวนเต็มที่ไม่ได้ลงนามของจำนวนลบ
printf ("%%f = "%f"\n" , $n ); // การแทนจำนวนจุดลอยตัว
printf ("%%o = "%o"\n" , $n ); // การเป็นตัวแทนฐานแปด
printf ("%%s = "%s"\n" , $n ); // เส้น
printf ("%%x = "%x"\n" , $n ); // การแสดงเลขฐานสิบหก (ตัวพิมพ์เล็ก)
printf ("%%X = "%X"\n" , $n ); // การแสดงเลขฐานสิบหก (ตัวพิมพ์ใหญ่)

พิมพ์f ("%%+d = "%+d"\n" , $n ); // ลงนาม descriptor ด้วยจำนวนเต็มบวก
printf ("%%+d = "%+d"\n" , $u ); // ลงนาม descriptor ด้วยจำนวนเต็มลบ
?>

ผลลัพธ์ของการรันตัวอย่างนี้:

%b = "10100111101010011010101101" %c = "A" %d = "43951789" %e = "4.39518e+7" %u = "43951789" %u = "4251015507" %f = "43951789.000000" %o = "247523 255 " %s = "43951789" %x = "29ea6ad" %X = "29EA6AD" %+d = "+43951789" %+d = "-43951789"

ตัวอย่าง #8 พิมพ์f(): ตัวอธิบายสตริง

$s = "ลิง" ;
$t = "ลิงหลายตัว" ;

Printf("[%s]\n" , $s ); // เอาต์พุตบรรทัดปกติ
printf ("[%10s]\n" , $s ); // จัดชิดขวาด้วยช่องว่าง
printf ("[%-10s]\n" , $s ); // จัดชิดซ้ายด้วยช่องว่าง
printf ("[%010s]\n" , $s ); // การเติมศูนย์ยังใช้ได้กับสตริงด้วย
printf ("[%"#10s]\n" , $s ); // ใช้อักขระเสริม "#" ของคุณเอง
printf ("[%10.10s]\n" , $t ); // จัดชิดซ้ายโดยตัดแต่งอักขระ 10 ตัว
?>

พิมพ์ฉ("วิธีการจัดรูปแบบ", parameter1, parameter2, ...) -- แสดงผลบนหน้าจอ

$ผลลัพธ์= วิ่ง("..", .., .., ...) - สิ่งเดียวกัน มีเพียงบรรทัดเท่านั้นที่ไม่แสดงผล แต่วางไว้ใน $result

อ้างอิงจากการแปลคู่มือ ( ตัวอย่างด้านล่าง:-):

วิ่ง

sprintf -- ส่งคืนสตริงที่จัดรูปแบบแล้ว
คำอธิบาย
sprintf (รูปแบบสตริง, แบบผสม ...);

ส่งกลับสตริงที่ประมวลผลตามสตริงรูปแบบ รูปแบบ .

สตริงรูปแบบที่มีคำสั่งเป็นศูนย์หรือมากกว่า: อักขระธรรมดา (ยกเว้น %) ที่ถูกคัดลอกไปยังผลลัพธ์โดยตรง และที่ถูกคัดลอกโดยตรงไปยังผลลัพธ์ และ คำอธิบายของการเปลี่ยนแปลงซึ่งแต่ละอย่างจะดำเนินการเฉพาะเจาะจง นอกจากนี้ยังใช้กับ วิ่ง()และเพื่อ พิมพ์f()

คำสั่งเปลี่ยนแปลงแต่ละคำสั่งประกอบด้วยองค์ประกอบต่อไปนี้ ตามลำดับ:

    เพิ่มเติม ตัวระบุช่องว่างภายในซึ่งบอกว่าจะใช้อักขระตัวใดเพื่อขยายผลลัพธ์ให้เป็นขนาดสตริงที่ถูกต้อง สิ่งเหล่านี้อาจเป็นช่องว่างหรือ 0 (อักขระศูนย์) โดยค่าเริ่มต้นจะเต็มไปด้วยช่องว่าง อักขระเสริมอื่นสามารถระบุได้ด้วยเครื่องหมายคำพูดเดี่ยว (") ดูตัวอย่างด้านล่าง

    เพิ่มเติม - ดูตัวอย่างด้านล่างซึ่งบอกว่าผลลัพธ์ควรชิดซ้ายหรือขวา

    เพิ่มเติม หมายเลขเสริมตามค่าเริ่มต้น การจัดตำแหน่งจะจัดชิดขวา - ตัวละครจะส่งผลให้จัดตำแหน่งไปทางซ้าย

    เพิ่มเติม ซึ่งระบุจำนวนอักขระขั้นต่ำที่ผลลัพธ์ของการแปลงนี้จะมีซึ่งบอกว่าสามารถแทนที่อักขระนี้ได้กี่ตัว (ขั้นต่ำ) ซึ่งบอกจำนวนตำแหน่งทศนิยมที่จะแสดงสำหรับตัวเลขทศนิยม .)

  1. ระบุเป็นจุด (".") ตามด้วยสตริงทศนิยมซึ่งระบุจำนวนตำแหน่งทศนิยมที่จะแสดงสำหรับตัวเลขทศนิยม เมื่อใช้กับสตริง ตัวระบุนี้จะทำหน้าที่เป็นจุดตัดที่กำหนดจำนวนอักขระสูงสุด คุณยังสามารถระบุสัญลักษณ์ที่ใช้เติมตัวเลขระหว่างจุดและตัวเลขได้คำอธิบายนี้ไม่มีผลกับประเภทอื่นนอกจากสองเท่า (ฟังก์ชันที่มีประโยชน์อีกอย่างในการจัดรูปแบบตัวเลขคือ

    number_format()
    ซึ่งบอกว่าควรปฏิบัติต่อประเภทข้อมูลของอาร์กิวเมนต์อย่างไร
    ประเภทที่เป็นไปได้:
    % คือสัญลักษณ์เปอร์เซ็นต์ ไม่จำเป็นต้องโต้แย้ง
    b - อาร์กิวเมนต์จะถือเป็นจำนวนเต็มและแสดงเป็นเลขฐานสอง
    c - อาร์กิวเมนต์ถือเป็นจำนวนเต็มและแสดงเป็นอักขระที่มีค่า ASCII
    d - อาร์กิวเมนต์จะถือเป็นจำนวนเต็มและแสดงเป็นเลขทศนิยม
    f - อาร์กิวเมนต์จะถือเป็นสองเท่าและแสดงเป็นตัวเลขทศนิยม
    o - อาร์กิวเมนต์จะถือเป็นจำนวนเต็มและแสดงเป็นเลขฐานแปด
ตัวอย่าง

s - อาร์กิวเมนต์ถูกตีความและแสดงเป็นสตริง

x - อาร์กิวเมนต์จะถือเป็นจำนวนเต็มและแสดงเป็นเลขฐานสิบหก (โดยมีตัวอักษรเป็นตัวพิมพ์เล็ก)

ตัวอย่าง

ทุกสิ่งที่เขียนลงไป >>> ระหว่างวงเล็บดังกล่าว <<< คือผลลัพธ์ของฟังก์ชัน (เช่น ตัวอย่างเอาต์พุตบนหน้าจอ) $s="MyString"; -> บรรทัด %s $f=12345.6789; -> เศษส่วน %f $d=12345; -> จำนวนเต็ม %d ระบบที่ 10: 0123456789 16numbers %x ระบบที่ 16: 0123456789abcdef 16numbers %X ระบบที่ 16: 0123456789ABCDEF 8numbers %o ระบบที่ 8: 01234567 2numbers %b ระบบที่ 2: 01 เพิ่งพิมพ์ หมายเลข : printf("%d",$ ง); >>> 12345<<< просто выводим 16число: printf("%X",123456789); >>>75BCD15<<< просто выводим 2число: printf("%b",$d); >>> 11000000111001 <<< просто выводим дробное число: printf("%f",$f); >>> 12345.6789 <<< дополнение чисел нулями: printf("%010d",$d); >>> 0000012345 <<< округление до 3х знаков после запятой: printf("%.3f",$f); >>> 12345.679 <<< просто выводим число + посторонний текст: printf("посторонний%dтекст",$d); >>> คนนอก12345ข้อความ<<< вывод нескольких переменных - последовательное перечисление printf("%d-%f-%s",$d,$f,$s); >>> 12345-12345.678900-MyString<<< выравнивание (ширина 20 символов) по правому краю, пустоту заполняем "_": printf("%"_20s",MyString); >>> ____________MyString<<< выравнивание по левому краю, пустоту заполняем "x": printf("%-"x20s",MyString); >>> MyStringxxxxxxxxxxxx<<<

ดูตัวอย่างอื่นๆ ที่นี่:

พิมพ์สตริง ค่าตัวแปร หรือนิพจน์
ไวยากรณ์:

พิมพ์ (หาเรื่องสตริง)

ฟังก์ชัน print() จะพิมพ์อาร์กิวเมนต์หาเรื่อง ซึ่งอาจเป็นตัวแปรหรือนิพจน์ก็ได้

เทียบกับprintf()

ส่งกลับสตริงที่จัดรูปแบบ (PHP 4 >= 4.1.0, PHP 5)

คำอธิบาย:

สตริง vsprintf (รูปแบบสตริง, อาร์เรย์ args)

ฟังก์ชันนี้คล้ายกับ sprintf() แต่ใช้อาร์เรย์มากกว่าจำนวนอาร์กิวเมนต์ที่แปรผันได้

พิมพ์ค่าตั้งแต่หนึ่งค่าขึ้นไป
ไวยากรณ์:

เสียงสะท้อน (สตริง arg1, สตริง ... )

ฟังก์ชัน echo() แสดงค่าของพารามิเตอร์ที่ระบุไว้
echo() จริงๆ แล้วเป็นโครงสร้างภาษา ดังนั้นจึงไม่จำเป็นต้องใส่วงเล็บแม้ว่าจะใช้หลายอาร์กิวเมนต์ก็ตาม
echo "เส้นแบ่งที่อยู่ในโค้ดจะถูกบันทึกและใช้ในเอาต์พุต"
"เพื่อหลีกเลี่ยงการใช้งานนี้"
"ตัวดำเนินการต่อข้อมูล";

ส่งออกสตริงที่จัดรูปแบบแล้ว
ไวยากรณ์:

Int printf(รูปแบบสตริง [, ผสม args, ...]);

ทำสิ่งเดียวกันกับ sprintf() เฉพาะสตริงผลลัพธ์เท่านั้นที่จะไม่ส่งคืน แต่ส่งไปยังเบราว์เซอร์ของผู้ใช้

ดำเนินการจัดรูปแบบสตริงด้วยการทดแทนตัวแปร
ไวยากรณ์:

Sprintf($รูปแบบ [,args, ...])

ฟังก์ชันนี้ส่งคืนสตริงที่สร้างจากสตริงรูปแบบที่มีอักขระพิเศษบางตัวซึ่งจะถูกแทนที่ด้วยค่าของตัวแปรที่เกี่ยวข้องในรายการอาร์กิวเมนต์ในภายหลัง
สตริงรูปแบบ $format สามารถรวมคำสั่งการจัดรูปแบบที่นำหน้าด้วยอักขระ %
อักขระอื่นๆ ทั้งหมดจะถูกคัดลอกไปยังสตริงเอาต์พุตตามที่เป็นอยู่ ตัวระบุรูปแบบแต่ละตัว (นั่นคือ อักขระ % และคำสั่งต่อไปนี้) จะจับคู่พารามิเตอร์เดียวและมีเพียงพารามิเตอร์เดียวที่ระบุหลังพารามิเตอร์ $format หากคุณต้องการใส่ % ในข้อความเป็นสัญลักษณ์ปกติ คุณต้องเพิ่มเป็นสองเท่า:

Echo sprintf("เปอร์เซ็นต์คือ %d%%",$percentage);

ตัวระบุรูปแบบแต่ละรายการมีองค์ประกอบได้สูงสุดห้าองค์ประกอบ (ตามลำดับที่ปรากฏหลังอักขระ %):

ตัวระบุขนาดฟิลด์เสริมที่ระบุจำนวนอักขระที่จะถูกจัดสรรสำหรับค่าเอาต์พุต
เป็นอักขระตัวแทน (หากค่ามีขนาดเล็กกว่าขนาดของช่องที่จะแสดง)
สามารถใช้ช่องว่างหรือ 0 ได้ ค่าเริ่มต้นคือช่องว่าง คุณสามารถระบุอักขระตัวเติมอื่นๆ ได้หากคุณระบุไว้ในสตริงรูปแบบที่นำหน้าด้วยเครื่องหมายอะพอสทรอฟี
ตัวระบุการจัดตำแหน่งเพิ่มเติมที่ระบุว่าผลลัพธ์จะจัดชิดขวาหรือซ้ายของฟิลด์ ค่าเริ่มต้นคือการจัดตำแหน่งทางขวา แต่คุณสามารถระบุการจัดตำแหน่งทางซ้ายได้โดยการระบุสัญลักษณ์ - (ลบ)

หมายเลขทางเลือกที่ระบุขนาดของฟิลด์สำหรับการแสดงค่า หากผลลัพธ์ไม่อยู่ในฟิลด์ ผลลัพธ์จะ "ขยาย" เกินขอบของฟิลด์นี้ แต่จะไม่ถูกตัดทอน
ตัวเลขที่เป็นทางเลือก นำหน้าด้วยจุด "." ซึ่งระบุจำนวนตำแหน่งทศนิยมในสตริงผลลัพธ์
ตัวระบุนี้จะถูกนำมาพิจารณาเฉพาะเมื่อมีการส่งออกจำนวนจุดทศนิยม มิฉะนั้นจะถูกละเว้น
ในที่สุด ตัวระบุที่จำเป็น (หมายเหตุ - จำเป็นเท่านั้น!) ของประเภทของค่าที่จะวางในสตริงเอาต์พุต:

b - อาร์กิวเมนต์ถัดไปจากรายการจะถูกส่งออกเป็นจำนวนเต็มไบนารี
c - สัญลักษณ์พร้อมรหัสที่ระบุในอาร์กิวเมนต์จะปรากฏขึ้น
ง - จำนวนเต็ม
f - จำนวนจุดลอยตัว
o - จำนวนเต็มฐานแปด
s - สตริงอักขระ
x - จำนวนเต็มฐานสิบหกที่มีตัวอักษรเล็ก a-z
X เป็นจำนวนเต็มฐานสิบหกที่มีอักษรตัวใหญ่ A-Z

ต่อไปนี้เป็นวิธีระบุความแม่นยำของตัวเลขทศนิยม:

$เงิน1 = 68.75;
$เงิน2 = 54.35;
$เงิน = $เงิน1 + $เงิน2;
// echo $money จะแสดงผลเป็น "123.1"...
$formatted = sprintf("%01.2f", $money);
// echo $formatted จะแสดงผลเป็น "123.10"!

นี่คือตัวอย่างของการส่งออกจำนวนเต็มที่นำหน้าด้วยจำนวนศูนย์ที่ต้องการ:

$isodate=sprintf("%04d-%02d-%02d",$ปี,$เดือน,$วัน);

ตีความสตริงตามรูปแบบและป้อนค่าลงในตัวแปร

ไวยากรณ์:

sscanf แบบผสม (สตริง str, รูปแบบสตริง [, สตริง var1 ...])

ฟังก์ชัน sscanf() อยู่ตรงข้ามกับฟังก์ชัน printf()

โดยจะแปลสตริง str ตามรูปแบบ คล้ายกับข้อกำหนด printf()

เมื่อระบุเพียงสองอาร์กิวเมนต์ ค่าผลลัพธ์จะถูกส่งกลับในอาร์เรย์

// รับหมายเลขซีเรียล $serial = sscanf("SN/235-0001", "SN/%3d-%4d");
เสียงสะท้อน $serial*10,000+$serial; // เอาต์พุต: 2350001
// และวันที่ผลิต$date = "01 มกราคม 2000";
รายการ($เดือน, $วัน, $ปี) = sscanf($date, "%s %d %d");
echo "วันที่: $year-".substr($เดือน,0,3)."-$dayn";
// เอาต์พุต: 2000-ม.ค.-01

เมื่อระบุพารามิเตอร์ทางเลือกเพิ่มเติม (ควรส่งผ่านโดยการอ้างอิง)

ฟังก์ชันส่งคืนหมายเลขของพวกเขา ตัวแปรเหล่านั้นที่ไม่ได้รับค่าจะไม่นำมาพิจารณาในค่าตอบแทน

// สร้างบันทึก XML จากสตริง $auth = "765tLewis Carroll";
$n = sscan($auth,"%dt%s %s", &$id, &$first, &$last);
เสียงสะท้อน "
$ก่อน
$สุดท้าย
เอ็น";

fprintf()

คำอธิบาย:

Int fprintf (ตัวจัดการทรัพยากร รูปแบบสตริง [, args แบบผสม])

เขียนสตริงที่สร้างขึ้นโดยใช้สตริงรูปแบบไปยังสตรีมที่มีการส่งผ่านหมายเลขอ้างอิงไปยังหมายเลขอ้างอิง อาร์กิวเมนต์รูปแบบถูกกล่าวถึงโดยละเอียดในคำอธิบายของฟังก์ชัน sprintf()

fprintf(): เติมด้วยศูนย์


กลับ;

fprintf($fp, "%04d-%02d-%02d", $ปี, $เดือน, $วัน);
// เขียนวันที่ที่จัดรูปแบบลงในไฟล์ date.txt
?>

fprintf(): การจัดรูปแบบค่าเงิน

ถ้า (!($fp = fopen("currency.txt", "w")))
กลับ;

$เงิน1 = 68.75;
$เงิน2 = 54.35;
$เงิน = $เงิน1 + $เงิน2;
// echo $money จะแสดงผลเป็น "123.1";
$เลน = fprintf($fp, "%01.2f", $money);
// สตริง "123.10" ถูกเขียนลงในไฟล์ currency.txt

echo "$len ไบต์ที่เขียนไปยังไฟล์ currency.txt";
?>

vfprintf()

เขียนสตริงที่จัดรูปแบบลงในสตรีม (PHP 5)

คำอธิบาย:

Int vfprintf (ตัวจัดการทรัพยากร, รูปแบบสตริง, อาร์เรย์ args)

เขียนสตริงที่จัดรูปแบบตามรูปแบบไปยังทรัพยากรสตรีมที่ระบุโดยหมายเลขอ้างอิง การจัดรูปแบบจะทำในลักษณะเดียวกับ sprintf()

ทำงานเหมือนกับ fprintf() แต่รับอาร์เรย์ของอาร์กิวเมนต์มากกว่าจำนวนอาร์กิวเมนต์ที่แปรผันได้

ส่งกลับความยาวของสตริงเอาท์พุต

ดูเพิ่มเติมที่: printf(), sprintf(), sscanf(), fscanf(), vsprintf() และ number_format()
ตัวอย่าง

vfprintf(): จำนวนเต็มไม่มีเบาะ

ถ้า (!($fp = fopen("date.txt", "w")))
กลับ;

vfprintf($fp, "%04d-%02d-%02d", array($ปี, $เดือน, $วัน));
// จะเขียนวันที่ ISO ที่จัดรูปแบบแล้วเป็น date.txt
?>

vprintf()

ส่งออกสตริงที่จัดรูปแบบ (PHP 4 >= 4.1.0, PHP 5)

คำอธิบาย:

Int vprintf (รูปแบบสตริง, อาร์เรย์ args)

ส่งออกค่าของอาร์เรย์ args ซึ่งจัดรูปแบบตามอาร์กิวเมนต์รูปแบบที่อธิบายไว้ในเอกสารประกอบฟังก์ชัน sprintf()

ฟังก์ชันนี้คล้ายกับ printf() แต่ใช้อาร์เรย์มากกว่าจำนวนอาร์กิวเมนต์ที่แปรผันได้

ส่งกลับความยาวของสตริงเอาท์พุต

ซึ่งบอกจำนวนตำแหน่งทศนิยมที่จะแสดงสำหรับตัวเลขทศนิยม

จัดรูปแบบตัวเลขด้วยการแยกกลุ่ม (PHP 3, PHP 4, PHP 5)

คำอธิบาย:

สตริง number_format (ตัวเลขลอยตัว [, ทศนิยม int])

สตริง number_format (ตัวเลขลอย, ทศนิยม int, สตริง dec_point, สตริง Thousand_sep)

number_format() ส่งคืนตัวเลขที่จัดรูปแบบแล้ว ฟังก์ชันรับหนึ่ง สอง หรือสี่อาร์กิวเมนต์ (ไม่ใช่สาม):

หากส่งผ่านอาร์กิวเมนต์เพียงตัวเดียว ตัวเลขจะถูกจัดรูปแบบโดยไม่มีส่วนที่เป็นเศษส่วน แต่จะมีเครื่องหมายจุลภาค (",") ระหว่างกลุ่มของตัวเลข 3 หลัก

หากส่งผ่านอาร์กิวเมนต์สองรายการ ตัวเลขจะถูกจัดรูปแบบด้วยทศนิยมหลังจุด (".") และเครื่องหมายจุลภาค (",") ระหว่างกลุ่มตัวเลข 3 หลัก

หากอาร์กิวเมนต์ทั้งสี่ถูกส่งผ่าน จำนวนจะถูกจัดรูปแบบด้วยทศนิยมหลังจุดและมีตัวคั่นระหว่างกลุ่มของตัวเลข 3 หลัก โดยใช้ dec_point เป็นจุดทศนิยมและ Thousand_sep เป็นตัวคั่นกลุ่ม

ใช้เฉพาะอักขระตัวแรกของบรรทัด Thousand_sep เท่านั้น ตัวอย่างเช่น หากคุณส่ง foo เป็น Thousand_sep เพื่อจัดรูปแบบตัวเลข 1000 number_format() จะส่งกลับ 1f000

ตัวอย่างการใช้ number_format()

ในฝรั่งเศส เป็นเรื่องปกติที่จะใช้ทศนิยม 2 ตำแหน่ง (",") และการเว้นวรรค (" ") เป็นตัวคั่นกลุ่ม การจัดรูปแบบนี้ได้มาจากการใช้รหัสต่อไปนี้:

$หมายเลข = 1234.56;

// รูปแบบภาษาอังกฤษ (ค่าเริ่มต้น)
$english_format_number = number_format($number);
// 1,234

// รูปแบบภาษาฝรั่งเศส
$nombre_format_francais = number_format($number, 2, ",", " ");
// 1 234,56

$หมายเลข = 1234.5678;

// รูปแบบภาษาอังกฤษโดยไม่มีตัวคั่นกลุ่ม
$english_format_number = number_format($number, 2, ".", "");
// 1234.57

เชือก วิ่ง(รูปแบบสตริง [, args แบบผสม])

ส่งกลับสตริงที่สร้างขึ้นโดยใช้รูปแบบสตริงรูปแบบ

สตริงรูปแบบประกอบด้วยคำสั่ง: อักขระปกติ (ยกเว้น %) ซึ่งจะถูกคัดลอกลงในสตริงผลลัพธ์ และ ตัวอธิบายการเปลี่ยนแปลง ซึ่งแต่ละรายการจะถูกแทนที่ด้วยพารามิเตอร์ตัวใดตัวหนึ่ง นอกจากนี้ยังใช้กับ fprintf() , วิ่ง()และ พิมพ์f() .

ตัวระบุการแปลงแต่ละรายการประกอบด้วยเครื่องหมายเปอร์เซ็นต์ (%) ตามด้วยองค์ประกอบเพิ่มเติมอย่างน้อยหนึ่งองค์ประกอบ (ตามลำดับที่แสดงไว้ที่นี่):

    ไม่จำเป็น ตัวระบุช่องว่างภายใน ซึ่งระบุอักขระที่จะใช้เพื่อขยายผลลัพธ์ตามความยาวที่ต้องการ นี่อาจเป็นช่องว่างหรือ 0 ค่าเริ่มต้นคือช่องว่าง

    ไม่จำเป็น - ดูตัวอย่างด้านล่าง อักขระทางเลือกสามารถระบุได้ด้วย " ดูตัวอย่างด้านล่าง

    ซึ่งกำหนดการจัดตำแหน่งไปทางซ้ายหรือขวา ตามค่าเริ่มต้น จะจัดชิดขวา - ใช้สำหรับจัดชิดซ้าย หมายเลขเสริม หมายเลขเสริม

    ไม่จำเป็น ซึ่งระบุจำนวนอักขระขั้นต่ำที่ผลลัพธ์ของการแปลงนี้จะมี ซึ่งระบุจำนวนอักขระขั้นต่ำที่ผลลัพธ์ของการแปลงนี้จะมี ซึ่งระบุจำนวนตำแหน่งทศนิยมที่จะแสดงสำหรับตัวเลขทศนิยม มีความหมายสำหรับประเภทข้อมูลตัวเลขเท่านั้นลอย ซึ่งบอกจำนวนตำแหน่งทศนิยมที่จะแสดงสำหรับตัวเลขทศนิยม .)

  1. ระบุเป็นจุด (".") ตามด้วยสตริงทศนิยมซึ่งระบุจำนวนตำแหน่งทศนิยมที่จะแสดงสำหรับตัวเลขทศนิยม เมื่อใช้กับสตริง ตัวระบุนี้จะทำหน้าที่เป็นจุดตัดที่กำหนดจำนวนอักขระสูงสุด คุณยังสามารถระบุสัญลักษณ์ที่ใช้เติมตัวเลขระหว่างจุดและตัวเลขได้ - (หากต้องการจัดรูปแบบตัวเลขก็สะดวกในการใช้ฟังก์ชันนี้เช่นกัน

    % คือสัญลักษณ์เปอร์เซ็นต์ อาร์กิวเมนต์ไม่ได้ใช้
    b - อาร์กิวเมนต์จะถือเป็นจำนวนเต็มและเอาต์พุตเป็นเลขฐานสอง
    c - อาร์กิวเมนต์ถือเป็นจำนวนเต็มและเอาต์พุตเป็นอักขระที่มีรหัส ASCII ที่สอดคล้องกัน
    d - อาร์กิวเมนต์จะถือเป็นจำนวนเต็มและส่งออกเป็นเลขทศนิยมที่ลงนาม
    e - อาร์กิวเมนต์ถูกตีความว่าเป็น ซึ่งระบุจำนวนตำแหน่งทศนิยมที่จะแสดงสำหรับตัวเลขทศนิยม มีความหมายสำหรับประเภทข้อมูลตัวเลขเท่านั้นและส่งออกในรูปแบบสัญกรณ์วิทยาศาสตร์ (เช่น 1.2e+2)
    คุณ - อาร์กิวเมนต์ถือเป็นจำนวนเต็มและส่งออกเป็นเลขทศนิยมที่ไม่ได้ลงนาม
    f - อาร์กิวเมนต์ถูกตีความว่าเป็น ซึ่งระบุจำนวนตำแหน่งทศนิยมที่จะแสดงสำหรับตัวเลขทศนิยม มีความหมายสำหรับประเภทข้อมูลตัวเลขเท่านั้นและส่งออกเป็นเลขทศนิยม
    o - อาร์กิวเมนต์จะถือเป็นจำนวนเต็มและเอาต์พุตเป็นเลขฐานแปด
    s - อาร์กิวเมนต์จะถือเป็นสตริง
    x - อาร์กิวเมนต์จะถือเป็นจำนวนเต็มและส่งออกเป็นเลขฐานสิบหก (เป็นตัวพิมพ์เล็ก)
    X - อาร์กิวเมนต์จะถือเป็นจำนวนเต็มและส่งออกเป็นเลขฐานสิบหก (ใช้อักษรตัวพิมพ์ใหญ่)

ตั้งแต่ PHP 4.0.6 สตริงรูปแบบรองรับการกำหนดหมายเลขและการเรียงลำดับพารามิเตอร์ใหม่ ตัวอย่างเช่น:


รหัสนี้จะแสดงผลว่า "มีลิง 5 ตัวอยู่ในต้นไม้" ทีนี้ลองจินตนาการว่าสตริงรูปแบบนั้นอยู่ในไฟล์แยกต่างหาก ซึ่งจากนั้นจะถูกแปลเป็นภาษาอื่น และเราเขียนมันใหม่ดังนี้:

ตัวอย่างที่ 2: การเปลี่ยนลำดับของพารามิเตอร์

$format = "%s มีลิง %d ตัว" ;

?>
เกิดปัญหา: ลำดับของตัวระบุการแปลงไม่ตรงกับลำดับของอาร์กิวเมนต์ เราไม่ต้องการเปลี่ยนโค้ด และเราต้องระบุว่าอาร์กิวเมนต์ใดที่สอดคล้องกับตัวระบุการแปลงใด

ตัวอย่างที่ 3: การเปลี่ยนลำดับของพารามิเตอร์

รหัสนี้จะส่งออก "ลิง 5 ตัวนั่งอยู่บนต้นไม้" ทีนี้ลองจินตนาการว่าสตริงรูปแบบนั้นอยู่ในไฟล์แยกต่างหาก ซึ่งจากนั้นจะถูกแปลเป็นภาษาอื่น และเราเขียนมันใหม่ดังนี้: "%2\$s มีลิง %1\$d ตัว";
printf ($รูปแบบ, $num, $location);
?>
การกำหนดหมายเลขอาร์กิวเมนต์มีประโยชน์อีกอย่างหนึ่ง: ช่วยให้คุณสามารถพิมพ์อาร์กิวเมนต์เดียวกันได้หลายครั้งโดยไม่ต้องส่งพารามิเตอร์เพิ่มเติมไปยังฟังก์ชัน