การลบ Whitespace ออกจากหัว/ท้ายของสตริง

Download Report

Transcript การลบ Whitespace ออกจากหัว/ท้ายของสตริง

1
่ าคัญทีส่ ุดอีกชนิด
• ในบทนี้จะกล่ าวถึงชนิดข้ อมูลพื้นฐานทีส
หนึ่ง นั่นก็คือสตริง จะได้ เรียนรู้วธิ ีการเขียนค่ าสตริง (String
Literal) รูปแบบต่ างๆ การทางานกับตัวอักษรในสตริง และ
การแปลงข้ อมูลชนิดอื่นๆ มาเป็ นชนิดสตริง
2
• บรรยายโดยผู้สอนและใช้ เอกสารประกอบการสอนของ
ผู้สอน
• สอนโดยใช้ ส่ือคอมพิวเตอร์ ผ่านเครื่ องฉาย
• อภิปรายในชั้นเรี ยนร่ วมกัน
่ เติมจากตาราและเอกสารทีเ่ กี่ยวข้ อง
• ให้ นิสิตค้ นคว้ าเพิม
• ทาแบบฝึ กหัดท้ ายบท
3
• ประเมินผลจากการตอบคาถามและอภิปรายในชั้นเรี ยน
• ทาแบบฝึ กหัดท้ ายบท
• ทารายงานส่ ง
4
สตริง (String)คือกลุ่มของอักขระ (Character) ซึ่งอาจเป็ นตัวอักษร
ตัวเลข เครื่ องหมายเว้ นวรรคตอน หรื อแม้ แต่ สัญลักษณ์ พเิ ศษต่ างๆ PHP
กาหนดให้ อักขระแต่ ละตัวในสตริงมีขนาด 1 ไบต์ หรื อ 8 บิต ดังนัน้ จึงมี
อักขระที่แตกต่ างกันทัง้ สิน 256 ตัว ซึ่งถ้ ามองเป็ นค่ าจานวนเต็ม หรื อที่เรี ยกว่ า
รหัสแอสกี้ (ASCII Code) ก็จะมีตงั ้ แต่ 0 ไปจนถึง 255 โดยอักขระที่มีค่า 0 ถึง
31 จะทาหน้ าที่เป็ นอักขระควบคุม (Contril Characters)เช่ น การขึน้ บรรทัด
ใหม่ และการเว้ นระยะแท็บ เป็ นต้ น อักขระที่มีค่า 32 ถึง 127 คือกลุ่มของ
ตัวอักษร เครื่ องหมายวรรคตอน และสัญลักษณ์ ต่ างๆ ในภาษาอังกฤษ ส่ วน
อักขระที่มีค่า 128 ถึง 255 จะแตกต่ างกันไปแล้ วแต่ ชุดอักขระ (Character Set)
ถ้ าเป็ นชุดอักขระที่มีภาษาไทย ส่ วนนีก้ จ็ ะเป็ นตัวอักษรในภาษาไทย
5
• สตริงแบบ single quote
เป็ นรู ปแบบที่ง่ายที่สุด โดยใช้ คาพูดขีดเดียว ( ‘ ) ครอบไว้ เช่ น
echo ‘this is a simple string’;
ถ้ าต้ องการให้ เครื่ องหมาย ‘ เป็ นส่ วนหนึ่งของค่ าสตริง ให้ ใช้ เครื่ องหมาย backslash กากับไว้ ข้างหน้ า
ส่ วนอักขระอื่นๆ ให้ ใส่ ลงไปโดยตรงได้ เลย ซึ่งรวมถึงเครื่ องหมายคาพูดสองขีด ( “ ) ด้ วย การใส่ backslash
ข้ างหน้ าอักขระอื่นๆ จะทาให้ เครื่ องหมาย backslash นัน้ กลายเป็ นส่ วนหนึ่งของค่ าสตริงด้ วย แทนที่จะถูก
ตีความเป็ นความหมายพิเศษ
echo ‘Arnold once said: “I\ ‘ ll be back”’;
จะแสดงข้ อความว่ า Arnold once said: “ I’ll be back”
6
• สตริงแบบ double quote
\n
\r
\t
\\
\$
\”
\0
(linefeed)
(carriage return)
10 (
13
(horizontal tab)
9
backslash 1
\777
\11
\t
9
(11
)
\101
65
\x0
10)
A
101
A
\xFF
7
• สตริงแบบ heredoc
<<< identifier
สตริง
indentifier
สตริงแบบ heredoc จะเริ่มต้ นด้ วย <<< ตามด้ วย identifier ซึ่งเป็ นคา
อะไรก็ได้ จากนัน้ ขึน้ บรรทัดใหม่ และระบุสตริงที่ต้องการลงไปโดยสามารถขึน้
บรรทัดใหม่ ภายในค่ าสตริงได้ ด้วย เสร็จแล้ วให้ ขนึ ้ บรรทัดใหม่ แล้ วปิ ดท้ ายด้ วย
identifier คาเดิม
8
<?
//กำหนดค่ำสตริงเป็ นข้ อมูล HTML เก็บไว้ ในตัวแปร $str
$str=<<<HTMLBLOCK
<head><title>Nooknet's Books</title></head>
<body bgcolor="#fffed9">
<h1>หนังสือของนุกเน็ต</h1>
<ul>
<li>สีแสนสนุก</li>
<li>สี่เหลี่ยมหรรษำ</li>
<li>Pooh and Friends</li>
<li>Dora's Rainbow Surprise</li>
</ul>
</body>
</html>
HTMLBLOCK;
echo $str; //แสดงค่ำสตริงในตัวแปร $str ออกมำ
?>
9
สามารถเข้ าถึงเพื่ออ่ านและแก้ ไขตัวอักษรแต่ ละตัวในสตริงได้ ซึ่งมีรูปแบบเหมือนกับการ
เข้ าถึงสมาชิกในอาร์ เรย์ นั่นคือให้ พมิ พ์ วงเล็บก้ ามปู [ ] ต่ อท้ ายชื่อตัวแปรสตริงแล้ วระบุ
หมายเลข (Offset) ของตัวอักษรที่ต้องการลงไปในวงเล็บ โดยตัวอักษรตัวแรกทางซ้ ายจะมี
หมายเลขเป็ น 0 สาหรับตัวถัดมาก็จะเป็ น 1, 2 , 3, ... ไปเรื่อยๆ ตามลาดับ เช่ นถ้ า
กาหนดค่ าสตริงดังนี ้
$str = “Hello World\nFrom\tPHP”;
10
<?
$str = "Hello World\nFrom\tPHP"; //กำหนดค่ำสตริงให้ กบั ตัวแปร $str
echo "$str<br><hr>\n"; // แสดงค่ำสตริงในตัวแปร $str ออกมำ
//อ่ำนตัวอักษรบำงตัวของสตริงมำแสดง
echo "หมำยเลข 0 คือตัว " . $str[0] . "<br>\n";
echo "หมำยเลข 5 คือตัว " . $str[5] . "<br>\n";
echo "หมำยเลข 10 คือตัว " . $str[10] . "<br>\n";
//แก้ ไขตัวอักษร 3 ตัวท้ ำยของสตริง
$str[17] = "ก";
$str[18] = "ข";
$str[19] = "ค";
echo "$str<br><hr>\n"; // แสดงค่ำสตริงในตัวแปร $str ออกมำอีกครัง้
//วนลูป เพื่อแสดงตัวอักษรทังหมดในสตริ
้
งออกมำทีละตัว พร้ อมทังรหั
้ สแอสกี ้ของมัน
for($i = 0;$i<strlen($str);$i++){
echo "หมำยเลข {$i}: " . $str[$i] . ",รหัสแอสกี ้ = " . ord($str[$i]) ." <br>\n";
}
?>
11
การแปลงค่ าชนิดต่ างๆ เป็ นชนิดสตริง มีเงื่อนไขดังนี ้
• ค่ าตรรกะ TRUE จะถูกแปลงเป็ น “1” และค่ าตรรกะ FALSE จะถูกแปลงเป็ น “” (สตริ งว่ าง)
• ค่ าชนิด integer หรื อ float จะถูกแปลงเป็ นสตริ งตัวเลขซึ่งแสดงถึงค่ านัน
้ ๆ เช่ น ค่ า จานวนเต็ม 123 จะถูก
•
•
•
•
แปลงเป็ น “123” และค่ าจานวนทศนิยม 123e-2 จะถูกแปลงเป็ น “1.23”
อาร์ เรย์ จะถูกแปลงเป็ นสตริง “Array” เสมอ ไม่ ว่าจะมีข้อมูลอะไรอยู่ในอาร์ เรย์ หรือไม่ มีข้อมูลเลย (ถ้ า
อาร์ เรย์ ว่าง) ก็ตาม ดังนัน้ ไม่ สามารถเขียนโค้ ดง่ ายๆ ว่ า echo $arr; เพื่อแสดง ข้ อมูลทัง้ หมดในอาร์ เรย์ $arr
ออกมาได้
ออบเจ็คจะถูกแปลงเป็ นค่ าสตริงที่มีรูปแบบ “Object id #n” โดย n คือหมายเลขออบเจ็คที่ PHP กาหนดให้
ในช่ วงรั นโปรแกรม ซึ่งแต่ ละออบเจ็คจะมีหมายเลขไม่ ซา้ กัน
ค่ าแบบ Resource จะถูกแปลงเป็ นสตริงที่มีรูปแบบ “Resource id #n” โดย n คือหมายเลข Resource ที่
PHP กาหนดให้ ในช่ วงรันโปรแกรม ซึ่งแต่ ละ Resource จะมีหมายเลขไม่ ซา้ กัน
ค่ า NULL จะถูกแปลงเป็ น “” (สตริงว่ าง)
12
<?
$b = TRUE; // เก็บค่ำตรรกะ TRUE ไว้ ในตัวแปร $b
$i = 123; // เก็บค่ำจำนวนเต็ม 123 ไว้ ในตัวแปร $i
$f = 123e-2; // เก็บค่ำจำนวนทศนิยม 123 x 10-2 ไว้ ในตัวแปร $f
$arr = array('สวัสดี','ประเทศไทย'); // เก็บอำร์ เรย์ไว้ ในตัวแปร $arr
$res = fopen('c:/boot.ini','r'); // เก็บค่ำ Resource ไว้ ในตัวแปร $res
$obj = new DOMDocument('1.0','tis-620'); // เก็บออบเจ็คไว้ ในตัวแปร $obj
/*ใช้ คำสัง่ echo แสดงค่ำของตัวแปรต่ำงๆ ออกมำ ซึง่ ค่ำทังหมดจะถู
้
กแปลงไปเป็ น
ชนิดสตริงก่อนโดยอัตโนมัติ*/
echo $b . "<br>";
echo $i . "<br>";
echo $f . "<br>";
echo $arr . "<br>";
echo $res . "<br>";
echo $obj . "<br>";
?>
13
ได้ แก่ ฟังก์ ช่ นั trim, Itrim, rtrim และ chop
string trim (string str[, string charlist])
string ltrim (string str[, string charlist])
string rtrim (string str[, string charlist])
ฟั งก์ ช่ นั trimใช้ ลบ Whitespace ออกจากหัวและท้ ายของสตริง str ซึ่ง Whitespace จะหมายถึง อักขระ
ต่ างๆ ต่ อไปนี ้
• ช่ องว่ าง ( “ ” ) คืออักขระที่มีรหัสแอสกี ้ 32 ( 20ฐานสิบหก )
• ขึน้ บรรทัดใหม่ (“\n”) คืออักขระที่มีรหัสแอสกี ้ 10 ( 0A ฐานสิบหก)
• Carriage Return (“\r”) คืออักขระที่มีรหัสแอสกี ้ 13 (0D ฐานสิบหก)
• แท็บแนวนอน (‘\t”) คืออักขระที่มีรหัสแอสกี ้ 9
• แท็บแนวตัง้ (“\x0B”)คืออักขระที่มีรหัสแอสกี ้ 11 (0B ฐานสิบหก)
• NUL-byte (“\0”) คืออักขระที่มีรหัสแอสกี ้ 0 (NUL-byte นีไ้ ม่ ใช่ ค่า NULL ที่หมายถึงค่ าว่ าง)
14
<?
$text = "\t\n สวัสดีครับ...";
//ลบ Whitespace
echo "บรรทัด 1: " . trim($text) . "<br>\n";
//ลบช่องว่ำง แท็บ และ จุด
echo "บรรทัด 2: " . trim($text, "\t.") . "<br>\n";
//ลบอักขระควบคุม (อักขระที่มีรหัสแอสกี ้ 0 ถึง 31)
echo "บรรทัด 3: " . trim($text,"x00\x1F") . "<br>\n";
?>
15
ได้ แก่ ฟังก์ ช่ ัน strtoupper, strtolower, ucfirst และ ucwords โดยทัง้ สี่ฟังก์ ช่ ันจะรับ
สตริงเข้ ามาเป็ นอาร์ กวิ เมนต์ แล้ วให้ ผลลัพธ์ เป็ นสตริงใหม่ ท่ เี กิดจากการนาตัวอักษรบางตัว
หรือทัง้ หมดในสตริงนัน้ มาแปลง Case ดังรายละเอียดในตาราง
ฟง ช่ น
strtoupper
strtolower
ucfirst
ucwords
อธิบ
ญ (Upper Case)
(Lower Case)
ญ
ญ
16
<?
$text = "How are you?";
echo "บรรทัด 1: " . strtoupper($text) . "<br>\n";
echo "บรรทัด 2: " . strtolower($text) . "<br>\n";
echo "บรรทัด 3: " . ucfirst($text) . "<br>\n";
echo "บรรทัด 4: " . ucwords($text) . "<br>\n";
?>
17
• ฟั งก์ ช่ ัน substr
string substr (string str,int start[,int length])
<?
echo "บรรทัด 1 : " . substr("กขคงจ", 1 ) . "<br>";
echo "บรรทัด 2 : " . substr("กขคงจ", 1,3 ) . "<br>";
echo "บรรทัด 3 : " . substr("กขคงจ", 0,4) . "<br>";
echo "บรรทัด 4 : " . substr("กขคงจ", 0,8) . "<br>";
echo "บรรทัด 5 : " . substr("กขคงจ", -2,1 ) . "<br><hr>";
$str="nooknet";
for($i=1;$i<=strlen($str);$i++){
echo substr($str,0,$i)."<br>";
}
?>
18
• ฟั งก์ ช่ ัน strpos, strrpos, stripos และ strripos
int strpos (string str, mixed search[,int offset])
int strrpos (string str, mixed search[,int offset])
int stripos (string str, mixed search[,int offset])
int strripos (string str, mixed search[,int offset])
19
<?
$str= "nooknet ok";
echo "สตริงที่ถกู ค้ นหำคือ \"$str"<hr>";
echo "<b>ค้ นหำโดยใช้ strpos</b><br>";
$pos1 = strpos($str,"ok");
$pos2 = strpos($str, "ok");
show_result();
echo "<b>ค้ นหำโดยใช้ strrpos</b><br>";
$pos1 = strrpos($str,"ok");
$pos2 = strrpos($str, "ok");
show_result();
echo "<b>ค้ นหำโดยใช้ stripos</b><br>";
$pos1 = stripos($str,"ok");
$pos2 = stripos($str, "ok");
show_result();
echo "<b>ค้ นหำโดยใช้ strripos</b><br>";
$pos1 = strripos($str,"ok");
$pos2 = strripos($str, "ok");
show_result();
function show_result(){
global $post1,$pos2;
echo 'ผลกำรค้ นหำสตริง "ok": ';
echo ($pos1 === FALSE ? "ไม่พบ" : "พบที่ตำแหน่ง
$pos1") . "<br>";
echo 'ผลกำรค้ นหำสตริง "ok": ';
echo ($pos2 === FALSE ? "ไม่พบ" : "พบที่ตำแหน่ง
$pos2") . "<hr>";
}
?>
20
• ฟั งก์ ช่ ัน strstr, stristr, strchr และ strrchr
string strstr (string str,string search)
string stristr (string str,string search)
string strchr (string str,string search)
string strrchr (string str,string search)
<?
$str= "nooknet ok";
echo "บรรทัด 1 :" . strstr($str,"ok") . "<br>";
echo "บรรทัด 2 :" . strstr($str,"ok") . "<br>";
echo "บรรทัด 3 :" . stristr($str,"ok") . "<br>";
//ในที่นี ้ฟั งก์ชนั่ จะใช้ ตวั อักษร e เพียงตัวเดียวในกำรค้ นหำ
echo "บรรทัด 4 :" . strrchr($str,"eieio") . "<br>";
?>
21
• ฟั งก์ ช่ ัน substr_replace
mixed substr_replace(mixed str,string replace,int start[,int length])
<?
$str="สวัสดีครับนุกเน็ต";
echo "บรรทัด 1 :" . substr_replace($str, "Hi,Nooknet",0) .
"<br>";
echo "บรรทัด 2 :" . substr_replace($str, "ค่ะ",6,4) . "<br>";
echo "บรรทัด 3 :" . substr_replace($str, "ชัยวัฒน์",10) .
"<br>";
echo "บรรทัด 4 :" . substr_replace($str, "ชัยวัฒน์",-7) .
"<br>";
echo "บรรทัด 5 :" . substr_replace($str, "",10,0) . "<br>";
?>
22
• ฟั งก์ ช่ ัน str_replace และ str_ireplace
mixed str_replace(mixed search, mixed replace, mixed str [,int &count])
mixed str_ireplace(mixed search, mixed replace, mixed str [,int &count])
<?
$error_string = "หมึกหกรดมุง่ มุง่ เลอะหมึกหมด";
$correct_string = str_replace("มุง่ " , "มุ้ง" , $error_string, $count);
echo "บรรทัด1 : $correct_string(มีกำรแทนที่ $count ครัง้ )<br>";
$message = "มำโหวตให้ v3 และ v4 กันเถอะ";
$af4_code = array("v1","v2","v3","v4","v5");
$af4_nickname = array("นัท","แจ็ค","พะแพง","แอ้ ","บอมบ์");
echo "บรรทัด2 : $new_message(มีกำรแทนที่ $count ครัง้ )<br>";
//แทนที่สระในภำษำอังกฤษด้ วยสตริงว่ำง (ลบสระทิ ้งนัน่ ไปเอง)
$text = "Hello World of PHP";
$vowels = array("a","e","i","o","u","A","E","I","O","U");
$new_text = str_replace($vowels,"",$text,$count);
echo "บรรทัด3 : $new_text(มีกำรแทนที่ $count ครัง้ )<br>";
?>
23
หลักการเปรี ยบเทียบสตริง คือ ตัวอักษรในตาแหน่ งที่ตรงกันของสตริง
ทัง้ สองชุดจะถูกนามาเปรี ยบเทียบกันทีละคู่ เริ่มจากตัวซ้ ายมือสุดก่ อน ถ้ า
ตัวอักษรใดมีค่าแอสกีน้ ้ อยกว่ าจะได้ ว่าสตริงนัน้ น้ อยกว่ าอีกสตริงหนึ่งทันที่ แต่
ถ้ าหากเท่ ากันจะเปรี ยบเทียบตัวอักษรที่สองนับจากซ้ ายมือต่ อไป และถ้ ายัง
เท่ ากันอีกก็จะใช้ ตัวอักษรที่อยู่ถัดไปทางขวาเรื่ อยๆ
ถ้ าหากเปรี ยบเทียบตัวอักษรสตริงทัง้ สองชุดไปเรื่ อยๆ แล้ วยังไม่ พบ
ความแตกต่ าง แต่ ปรากฏว่ าสตริงหนึ่งสิน้ สุดแล้ ว ในขณะที่อีกสตริ งยังมี
ตัวอักษรอื่นตามมาอีก (พูดง่ ายๆ คือสตริงชุดหนึ่งเป็ นสตริงย่ อยของสตริงอีก
ชุดหนึ่ง) กรณีอย่ างนีส้ ตริงที่ยาวกว่ าจะมีค่ามากกว่ า
24
int strcmp (string str1,string str2)
int strcasecmp (string str1,string str2)
ใช้ เปรียบเทียบสตริง 2 ชุด โดยฟั งก์ ช่ ัน strcmp จะสนใจความแตกต่ างระหว่ าง
ตัวอักษรเล็กกับใหญ่ ในขณะที่ strcasecmp จะไม่ สนใจ (ignore case) ผลลัพธ์ ของฟั งก์ ช่ ัน
ทัง้ สองมีความหมายดังนี ้
ผ พธ
0(
0(
0
str1น้อยกว่า str2 (str1มาก่อน str2)
)
)
str1มากกว่า str2 (str1มาทีหลัง str2)
str1เท่ากับ str2
25
<?
//กำหนดตัวแปรสตริง 2 ตัวที่จะนำมำเปรี ยบเทียบกัน
$str1 = "promlert";
$str2 = "Provision";
echo "<b>เปรี ยบเทียบโดยใช้ strcmp: </br>";
if (strcmp($str1,$str2)<0)
echo "\"$str1\" น้ อยกว่ำ \"\str2\"<br>";
elseif (strcmp($str1,$str2)>0)
echo "\"$str1\" มำกกว่ำ \"\str2\"<br>";
else
echo "\"$str1\" เท่ำกับ \"\str2\"<br>"
echo "<b>เปรี ยบเทียบโดยใช้ strcasecmp: </b>";
if (strcasecmp($str1,$str2)<0)
echo "\"$str1\" น้ อยกว่ำ \"\str2\"<br>";
elseif (strcasecmp($str1,$str2)>0)
echo "\"$str1\" มำกกว่ำ \"\str2\"<br>";
else
echo "\"$str1\" เท่ำกับ \"\str2\"<br>";
?>
26
• ฟั งก์ ช่ ัน strncmp และ strncasecmp
int strncmp (string str1,string str2 , int length)
ใช้ เปรียบเทียบตัวอักษรจานวน length ตัวแรกของสตริง โดยฟั งก์ ช่ ัน strncmp จะ
สนใจความแตกต่ างระหว่ างตัวอักษรเล็กกับใหญ่ ในขณะที่ strncasecmp จะไม่ สนใจ
(ignore case) ผลลัพธ์ ของฟั งก์ ช่ ันทัง้ สองจะมีความหมาเยหมือนกับฟั งก์ ช่ ัน strcmp และ
strcasecmp
27
• ฟั งก์ ช่ น
ั strnatcmp และ strnatcasemp
int strnatcmp (string str1,string str2)
เปรี ยบเทียบสตริง 2 ชุดโดยใช้ “ลาดับธรรมชาติ” (Natural Order)ซึ่งสาหรั บ
สตริงที่มีตวั อักษรผสมกับตัวเลข (alphanumeric) จะได้ ผลการเปรี ยบเทียบที่ตรงกับ
ความรู้ สกึ ของมนุษย์ มากกว่ าการเปรี ยบเทียบแบบปกติ เช่ นถ้ ามีสตริงอยู่ 3 ชุด คือ
“img1.jpg”, “img2.jpg” และ “img10.jpg”เมื่อเปรี ยบเทียบโดยใช้ หลักการที่อธิบายก่ อน
หน้ านีจ้ ะได้ ลาดับจากน้ อยไปมาก คือ“img1.jpg”, “img10.jpg” และ “img2.jpg” แต่ ถ้า
ใช้ Natural Order จะได้ ลาดับจากน้ อยไปมากคือ “img1.jpg”, “img2.jpg” และ
“img10.jpg”
28
• ฟั งก์ ช่ ัน implode
string implode(string ตัวเชื่อม,array อำร์ เรย์ที่บรรจุสตริงต่ำงๆไว้
<?
$arr =array("ไข่ดำว","หมูแฮม","แยมสัปปะรด");
echo "บรรทัด 1: " . implode("-",$arr). "<br>";
echo "บรรทัด 2: " . implode("/",$arr). "<br>";
echo "บรรทัด 3: " . implode(",",$arr). "<br>";
?>
29
• ฟั งก์ ช่ ัน explode
array explode (string ตัวแยก,string str[,int limit])
<?
$filepath = "C:/Program Files/Internet Explorer/iexplore.exe";
$arr = explode("/",$filepath);
print_array($arr);
$arr = explode("/",$filepath,2);
print_array($arr);
$arr = explode("",$filepath);
print_array($arr);
function print_array($a){
echo "<pre>";
print_r($a);
echo"</pre>";
}
?>
30
• ฟั งก์ ช่ ัน printf
int printf(string รูปแบบ[,mixed ค่ำ[,mixed...]])
ฟั งก์ ช่ นั printf ใช้ แสดงสตริงที่จัดรูปแบบ (formatted string)ฟั งก์ ช่ นั นีจ้ ะทางานเหมือนคาสั่ง echo ถ้ า
ระบุอาร์ กิวเมนต์ เพียงตัวเดียว เช่ น
printf("สวัสดีครับ");
ฟั งก์ ช่ นั printf จะมีประโยชน์ จริงๆ เมื่อต้ องการนาค่ าของตัวแปรหรือนิพจน์ ใส่ ลงไปในสตริงโดยให้
จัดรู ปแบบค่ านัน้ ตามที่กาหนด เช่ น
$price = 550;
printf("สินค้ ำชิ ้นนี ้รำคำ %d บำท",$price);
31
สามารถใส่ ค่าเข้ าไปในสตริงได้ มากกว่ า 1 ค่ าพร้ อมกัน โดยต้ องระบุ Format Specifier
ภายในสตริงให้ มีจานวนและลาดับสอดคล้ องกับอาร์ กวิ เมนต์ ท่ จี ะแทนค่ าลงไป เช่ น
$item = "บล็อคหยอดหมีพหู ์";
$price = 550;
printf("สินค้ ำ %s รำคำ %d บำท",$item,$price);
32
ตารางแสดงตัวอย่ างที่ใช้ กาหนด Format Specifier
ตอ ร
b
c
d
e
u
f
o
s
x
(Binary)
(Decimal)
ศ
( 2.6e+3)
(unsigned)
ศ
(Octal)
(Hexadecimal) โดยใช้ตวั อักษรทางภาษาอังกฤษ
ตัวเล็ก (0 ถึง9 และ a ถึง f )
โ
X
ภ
ฤ
ญ (0
9
A ถึง F )
33
<?
$name1 = "Pooh";
$name2 = "Piglet";
echo "<PRE>";
printf("%10s\n",$name1);
printf("%10s\n",$name2);
echo "</PRE>";
?>
34
string sprintf(string รูปแบบ[,mixed ค่ำ[,mixed ...]])
ฟั งก์ ช่ ัน sprintf จะจัดรูปแบบสตริงเช่ นเดียวกับฟั งก์ ช่ ัน printf แต่ จะส่ งค่ าสตริงที่
จัดรูปแบบแล้ วกลับมาให้ แทนที่จะแสดงออกมา จึงนาสตริงที่จัดรูปแบบไปใช้ งานใน
โปรแกรมต่ อไปได้
$price = 550;
$text = sprintf("สินค้ ำชิ ้นนี ้รำคำ %.2f บำท",$price);
ตัวแปร $text จะเก็บค่ าสตริง “สินค้ าชินนีร้ าคา 550.00 บาท “ ไว้
35
• ฟั งก์ ช่ ัน n12br
string n12br(string str)
<?
//สร้ ำงค่ำสตริงที่มี 3 บรรทัดเก็บไว้ ในตัวแปร $text
$text = "บรรทัด 1\nบรรทัด 2\nบรรทัด3\n";
echo "<h3>ผลลัพธ์เมือ่ ไม่ได้ ใช้ ฟังก์ชนั่ n12br</h3>\n";
echo $text;
echo "<h3>ผลลัพธ์เมือ่ ใช้ ฟังก์ชนั่ n12br</h3>\n";
echo n12br($text);
?>
36
• ฟั งก์ ช่ ัน htmlspecialchars
string htmlspecialchars(string str[,int quote_style[,string charset]])
อ ขระ
HTML Entities
< (เครื่ องหมายมากกว่า)
&lt;
> (เครื่ องหมายน้อยกว่า)
&gt;
“ (เครื่ องหมายคาพูดสองขีด)
&quot;
‘ (เครื่ องหมายคาพูดขีดเดียว)
&#039;
& (Ampersand)
&amp;
37
<?
$input_from_user = '<a href="www.provision.co.th">ทดสอบ</a>';
echo "บรรทัด 1: " . $input_from_user . "<br>\n";
echo "บรรื ทดั 2: " . htmlspecialchars($input_from_user) . "<br>\n";
?>
38
• สตริ ง (String) คือกลุ่มของอักขระ (Character) ซึ่งอาจเป็ นตัวอักษร ตัวเลข เครื่ องหมายวรรค
•
•
•
•
ตอน หรื อสัญลักษณ์ พเิ ศษต่ างๆ ก็ได้
การเขียนค่ าสตริ ง (String Literal) ในภาษา PHP สามารถทาได้ 3 รู ปแบบ คือ สตริ งแบบ
single quote ,สตริ งแบบ double quote และสตริงแบบ heredoc
สตริงแบบ double quote และ heredoc จะมีการแทนค่ าให้ กับตัวแปรต่ างๆ ที่ปรากฏชื่ออยู่ใน
สตริงและจะตีความ Escape Sequence ซึ่งหมายถึงกลุ่มอักขระที่นาหน้ าด้ วยเครื่ องหมาย
backslash ( \ ) เช่ น \n จะถูกตีความเป็ นการขึน้ บรรทัดใหม่ เป็ นต้ น ในขณะที่สตริ งแบบ
single quote จะไม่ แทนค่ าให้ กับชื่อตัวแปรและไม่ ตีความ Escape Sequence แต่ จะมองเป็ น
ตัวอักขระต่ างๆ อย่ างตรงไปตรงมา
การเข้ าถึงเพื่ออ่ านหรื อเขียนตัวอักษรหนึ่งๆ ในสตริ งจะมีรูปแบบเหมือนการเข้ าถึงสมาชิกใน
อาร์ เรย์
เมื่อต้ องการแปลงค่ าใดๆเป็ นชนิดสตริง ให้ ใช้ ตัวดาเนินการ (string) หรื อใช้ ฟังก์ ช่ ัน strval
39
ฟั งก์ ช่ ันเกี่ยวกับสตริงที่อธิบายในบทนี ้
• ฟั งก์ ช่ ันที่ใช้ ลบ Whitespace ออกจากหัว/ท้ ายของสตริง ได้ แก่ trim , Itrim และ rtrim
• ฟั งก์ ช่ ันที่ใช้ แปลง Case ตัวอักษร ได้ แก่ strtoupper, strtolower, ucfirst และ ucwords
• ฟั งก์ ช่ ันที่ใช้ ทางานกับสตริงย่ อย (Substring) ได้ แก่
• ฟั งก์ ช่ ัน substr ใช้ หาสตริงย่ อยภายในสตริงที่กาหนด โดยระบุตาแหน่ งเริ่มต้ นและจานวนตัวอักษรที่ต้อ งการ
• ฟั งก์ ช่ ัน strops, strrpos, stripos และ strripos ใช้ หาตาแหน่ งของสตริ งย่ อยภายในสตริ งที่กาหนด โดยระบุสตริงที่ต้องการ
ค้ นหา
• ฟั งก์ ช่ ัน strstr, stristr, strchr และ strrchr ใช้ หาสตริงย่ อยภายในสตริงที่กาหนด โดยระบุสตริงย่ อยที่ต้องการค้ นหา
• ฟั งก์ ช่ ัน substr_replace ใช้ แทนที่สตริงย่ อยภายในสตริ งที่กาหนด โดนระบุตาแหน่ งเริ่มต้ นและจานวนตัวอั กษรที่ต้องการ
• ฟั งก์ ช่ ัน str_replace และ str_ireplace ใช้ แทนที่สตริงย่ อยที่กาหนด โดยระบุสตริงย่ อยที่ต้องการแทนที่
• ฟั งก์ ช่ ันที่ใช้ เปรี ยบเทียบสตริง ได้ แก่ strcmp , strcasecmp , strncmp , strncasecmp , strnatcmp และ strnatcasemp
• ฟั งก์ ช่ ันที่ใช้ รวมสตริง ได้ แก่ implode และฟั งก์ ช่ ันที่ใช้ แยกสตริ ง ได้ แก่ explode
• ฟั งก์ ช่ ันที่ใช้ จัดรู ปแบบสตริง ได้ แก่ printf และ sprint
• ฟั งก์ ช่ ันเกี่ยวกับแท็กในภาษา HTML ได้ แก่ nl2br , htmlspecialchars และ htmlentities
40
41