String formatting

ในภาษา PHP มีฟังก์ชันในการจัดรูปแบบของ String ที่เรียกว่า Format string คือฟังก์ชัน sprintf() ซึ่งเป็นฟังก์ชันสำหรับจัดรูปแบบของ String หรือตัวเลขเพื่อให้แสดงผลได้ในรูปแบบต่างๆ ที่กำหนดโดย Type specifiers เป็นรูปแบบของการแสดงผลของฟังก์ชัน

string sprintf ( string $format [, mixed $args [, mixed $... ]] )

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

นี่เป็นรายการของ Type specifiers ที่ใช้กำหนดสำหรับพารามิเตอร์ตัวแรกของฟังก์ชัน sprintf()

  • %% - แสดงตัวอักษรเปอร์เซนต์ ไม่มีอากิวเมนต์
  • %b - อากิวเมนต์แบบ Integer และแสดงผลในเลขฐานสอง
  • %c - อากิวเมนต์แบบ Integer และแสดงค่ารหัส ASCII เป็น Integer
  • %d - อากิวเมนต์แบบ Integer แสดงผลลัพธ์แบบ Integer ที่มีเครื่องหมาย
  • %e - อากิวเมนต์แบบ Float แสดงผลลัพธ์แบบสัญกรณ์วิทยาศาสตร์
  • %E - อากิวเมนต์แบบ Float แสดงผลลัพธ์แบบสัญกรณ์วิทยาศาสตร์
  • %f - อากิวเมนต์แบบ Float แสดงผลลัพธ์แบบ Float (locale aware)
  • %F - อากิวเมนต์แบบ Float แสดงผลลัพธ์แบบ Float (non-locale aware)
  • %g - รูปแบบสั้นของ %e และ %f
  • %G - รูปแบบสั้นของ %E และ %F
  • %o - อากิวเมนต์แบบ Integer และแสดงผลในเลขฐานแปด
  • %s - อากิวเมนต์แบบ String แสดงผลลัพธ์แบบ String
  • %u - อากิวเมนต์แบบ Integer แสดงผลลัพธ์แบบ Integer ที่ไม่มีเครื่องหมาย
  • %x - อากิวเมนต์แบบ Integer และแสดงผลในเลขฐานสิบหก (ตัวพิมพ์เล็ก)
  • %X - อากิวเมนต์แบบ Integer และแสดงผลในเลขฐานสิบหก (ตัวพิมพ์ใหญ่)

การแสดงผลด้วยฟังก์ชัน sprintf()

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

<?php

$name = "Mateo";
$score = 38;

echo sprintf("%s love playing game.\n", $name);
echo sprintf("%s play a game and his score is %d.\n", $name, $score);

?>

ในตัวอย่าง เป็นการแสดงผลข้อความและตัวเลขด้วยฟังก์ชัน sprintf() พารามิเตอร์ตัวแรกของเป็นรูปแบบของ String ซึ่งเราได้กำหนด Type specifier ที่ต้องการภายใน String นี้ และพารามิเตอร์ตัวที่สองเป็นต้นไป เป็นค่าของ Type specifier ที่เราได้กำหนดในพารามิเตอร์แรกของฟังก์ชัน

sprintf("%s love playing game.\n", $name);

ในคำสั่งนี้ เป็นการแสดงผลข้อความโดยค่าในตัวแปร $name จะถูกนำไปแทนที่ใน %s

sprintf("%s play a game and his score is %d.\n", $name, $score)

ในคำสั่งนี้เรามี Type specifier สองตัวคือ %s และ %d ดังนั้นเราจึงส่งอากิวเมนต์เป็น $name และ $score ซึ่งเป็นข้อมูลที่แสดงใน Type specifier ตามลำดับ

Mateo love playing game.
Mateo play a game and his score is 38.

นี่เป็นผลลัพธ์การทำงานของโปรแกรม Type specifier ทั้งหมดถูกแทนที่ด้วยค่าของตัวแปรแทน

การแสดงตัวเลขด้วยฟังก์ชัน sprintf()

ในภาษา PHP คุณยังสามารถใช้ฟังก์ชัน sprintf() เพื่อแสดงผลตัวเลขในรูปแบบต่างๆ เช่น ในฐานอื่นหรือข้อมูลประเภทอื่น มาดูตัวอย่างการใช้งาน

<?php

$number = 28;

echo sprintf("Type\tValue\n");
echo sprintf("%%d\t%d\n", $number);
echo sprintf("%%b\t%b\n", $number);
echo sprintf("%%e\t%e\n", $number);
echo sprintf("%%E\t%E\n", $number);
echo sprintf("%%f\t%f\n", $number);
echo sprintf("%%F\t%F\n", $number);
echo sprintf("%%o\t%o\n", $number);
echo sprintf("%%u\t%u\n", $number);
echo sprintf("%%x\t%x\n", $number);
echo sprintf("%%X\t%X\n", $number);

?>

ในตัวอย่าง เป็นการแสดงค่าของ 28 ซึ่งเป็นค่าในฐานสิบในรูปแบบต่างๆ ซึ่ง Type specifier แต่ละประเภทนั้นมีการแสดงผลที่แตกต่างกันออกไปถึงแม้ว่าจะเป็นค่าเดียวกันก็ตาม

Type    Value
%d 28
%b 11100
%e 2.800000e+1
%E 2.800000E+1
%f 28.000000
%F 28.000000
%o 34
%u 28
%x 1c
%X 1C

นี่เป็นผลลัพธ์การทำงานของโปรแกรม คุณจะเห็นว่าการแสดงผลของเลข 28 นั้นแตกต่างกัน แต่ค่าเหล่านี้เป็นค่าเดียวกัน เช่นเมื่อคุณเปรียบเทียบ 28 == 11100b จะได้ผลลัพธ์เป็นจริง เพราะว่า 11100b นั้นคือ 28 ในฐานสอง

ต่อไปเป็นตัวอย่างในการใช้งานของฟังก์ชันในการจัดรูปแบบกับการแสดงผลตัวเลขทศนิยมและตัวเลขจำนวนเต็ม

<?php

$number = 28.848315;

echo sprintf("%f\n", $number);
echo sprintf("%.2f\n", $number);
echo sprintf("%.4f\n", $number);

$number2 = 28;

echo sprintf("%5d\n", $number2);
echo sprintf("%'.5d\n", $number2);
echo sprintf("%'05d\n", $number2);

?>

คุณสามารถกำหนดการแสดงจำนวนหลักของจุดทศนิยมได้โดยการกำหนด Type specifier เช่น %.nf โดยที่ n เป็นจำนวนหลักของทศนิยมที่คุณต้องการแสดง

สำหรับในตัวแปร $number2 นั้นเป็นการใส่ข้อความในรูปแบบ Pad left โดยการกำหนด Type specifier ในรูปแบบ %nd หรือ %'mnd เมื่อ n เป็นจำนวนตัวอักษรทั้งหมด และ m เป็นตัวอักษรที่ต้องการเติมใส่ทางด้านซ้าย

28.848315
28.85
28.8483
28
...28
00028

นี่เป็นผลลัพธ์การทำงานของโปรแกรม

การจัดรูปแบบของข้อความ String

ต่อไปเป็นตัวอย่างในการจัดรูปแบบของ String โดยการเพิ่มข้อความหรือที่เรียกกว่า Padding Strings ในภาษา PHP

<?php

$lang = "PHP";
$site = "marcuscode.com";

echo sprintf("[%s]\n", $lang);
echo sprintf("[%10s]\n", $lang);
echo sprintf("[%-10s]\n", $lang);
echo sprintf("[%010s]\n", $lang);
echo sprintf("[%'#10s]\n", $lang);
echo sprintf("[%10.10s]\n", $site);

?>

ในตัวอย่าง เป็นการแสดงผลของ String "PHP" ในรูปแบบต่างๆ โดยการจัดรูปแบบ String

echo sprintf("[%10s]\n", $lang);
echo sprintf("[%-10s]\n", $lang);

เราเพิ่มจำนวนเต็มบวกสำหรับเติม String ในทางซ้าย และจำนวนเต็มลบสำหรับเต็ม String ในทางขวาในตัวอย่าง %10s เป็นการแสดง String ทั้งหมดที่มีขนาด 10 โดยเติมช่องว่างจากทางด้านซ้าย (Left padding) และ -10 สำหรับเติมช่องว่างจากทางด้านขวา (Right padding)

echo sprintf("[%010s]\n", $lang);
echo sprintf("[%'#10s]\n", $lang);

คุณสามารถใช้ตัวเลข ตัวอักษร หรือสัญลักษณ์อื่นๆ ได้ ดังในตัวอย่าง คำสั่งแรกเป็นการเพิ่ม 0 ทางซ้ายของ String ให้มีขนาดเป็น 10 คำสั่งที่สองเป็นการเพิ่มเครื่องหมาย # โดยเครื่องหมายจะต้องขึ้นต้นด้วย ' เสมอ

echo sprintf("[%10.10s]\n", $site);

ในคำสั่งนี้ เป็นการแสดงข้อความที่มีขนาด 10 โดยตัดเอาเพียงแค่ 10 ตัวอักษรจาก String "marcuscode.com"

[PHP]
[ PHP]
[PHP ]
[0000000PHP]
[#######PHP]
[marcuscode]

นี่เป็นผลลัพธ์การทำงานของโปรแกรม

การใช้ฟังก์ชัน number_format()

ในภาษา PHP คุณสามารถใช้ฟังก์ชัน number_format() สำหรับจัดรูปแบบของตัวเลข เช่น การแสดงผลในรูปแบบของเงินหรือจำนวนที่มีเครื่องหมาย , แบ่งในหลักพัน มาดูตัวอย่างการใช้งานของฟังก์ชัน

<?php

$number = 1272.831931;
echo $number . "\n";
echo number_format($number) . "\n";
echo number_format($number, 2) . "\n";

$money = 36471.90;
echo number_format($money, 2, ".", ",") . "\n"; // US format
echo number_format($money, 2, ",", ".") . "\n"; // English format
echo number_format($money, 2, "/", "-") . "\n"; // Custom format

?>

ในตัวอย่าง เป็นการแสดงตัวเลขโดยการจัดรูปแบบในแบบต่างๆ ซึ่งฟังก์ชันนี้สามารถใส่ได้ตั้งแต่หนึ่ง สอง และสี่พารามิเตอร์

echo number_format($number) . "\n";
echo number_format($number, 2) . "\n";

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

$money = 36471.90;
echo number_format($money, 2, ".", ",") . "\n"; // US format
echo number_format($money, 2, ",", ".") . "\n"; // English format
echo number_format($money, 2, "/", "-") . "\n"; // Custom format

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

1272.831931
1,273
1,272.83
36,471.90
36.471,90
36-471/90

นี่เป็นผลลัพธ์การทำงานของโปรแกรม เราได้แสดงตัวเลขในจำนวนทศนิยมที่ต่างกัน และทำการเปลี่ยนตัวคั่นของทศนิยม และหลักพันในรูปแบบของอเมริกาและอังกฤษ และแบบกำหนดเอง

ในบทนี้คุณได้เรียนรู้เกี่ยวกับฟังก์ชัน sprintf() และฟังก์ชัน number_format() ซึ่งเป็นฟังก์ชันสำหรับจัดรูปแบบของ String และตัวเลขในภาษา PHP


บทความเกี่ยวกับ String formatting

String ในภาษา Java

ในบทนี้ คุณจะได้เรียนเกี่ยวกับประเภทข้อมูล String และคลาสของ String โดยละเอียด และนอกจากนี้ยังเรียนรู้ถึงวิธีการใช้เมธอดเพื่อจัดการ String ในภาษา Java String เป...

String ในภาษา Visual Basic

ในบทนี้ คุณจะได้เรียนรู้เกี่ยวกับ string ในภาษา Visual Basic เพราะว่า string นั้นมีเนื้อหาและรายละเอียดค่อนข้างมากสำหรับการเขียนโปรแกรม ดังนั้นเราจึงแบ่งเนื้อหา...

String ในภาษา Python

ในบทนี้ คุณจะได้เรียนรู้เกี่ยวกับ String ในภาษา Python เราจะพูดเกี่ยวกับการประกาศและใช้งาน String ในรูปแบบต่างๆ เพราะว่าเนื้อหาเกี่ยวกับ String นั้นมีค่อนข้างม...

String methods ในภาษา Python

ในบทก่อนหน้า เราได้พูดเกี่ยวกับการใช้งาน String ในเบื้องต้นไปแล้ว ในบทนี้ เราจะแนะนำเมธอดและการใช้งานเมธอดในคลาส String ในภาษา Python นั้น String เป็นคลาสมาตรฐา...