php: hypertext preprocessor
DESCRIPTION
บทที่ 12 [String]. PHP: Hypertext Preprocessor. สัญญา เครือหงษ์ ภาควิชาวิทยาการคอมพิวเตอร์และเทคโนโลยีสารสนเทศ คณะวิทยาศาสตร์ มหาวิทยาลัยนเรศวร. วัตถุประสงค์การเรียนรู้ประจำบท. - PowerPoint PPT PresentationTRANSCRIPT
1
PHP:Hypertext Preprocessor
สญญา เครอหงษภาควชาวทยาการคอมพวเตอรและเทคโนโลยสารสนเทศคณะวทยาศาสตร มหาวทยาลยนเรศวร
บทท 12[String]
2
วตถประสงคการเรยนรประจำาบท• ในบทนจะกลาวถงชนดขอมลพนฐานทสำาคญทสดอกชนดหนง นนกคอสตรง จะไดเรยนรวธการเขยนคาสตรง (String Literal) รปแบบตางๆ การทำางานกบตวอกษรในสตรง และการแปลงขอมลชนดอนๆ มาเปนชนดสตรง
3
กจกรรมการเรยนการสอน•บรรยายโดยผสอนและใชเอกสารประกอบการสอนของผสอน•สอนโดยใชสอคอมพวเตอรผานเครองฉาย•อภปรายในชนเรยนรวมกน• ใหนสตคนควาเพมเตมจากตำาราและเอกสารทเกยวของ•ทำาแบบฝกหดทายบท
4
การประเมนผล•ประเมนผลจากการตอบคำาถามและอภปรายในชนเรยน•ทำาแบบฝกหดทายบท•ทำารายงานสง
5
สตรงในภาษา PHP สตรง (String)คอกลมของอกขระ (Character) ซงอาจเปนตวอกษร ตวเลข เครองหมายเวนวรรคตอน หรอแมแตสญลกษณพเศษตางๆ PHP กำาหนดใหอกขระแตละตวในสตรงมขนาด 1 ไบตหรอ 8 บต ดงนน จงมอกขระทแตกตางกนทงสน 256 ตว ซงถามองเปนคาจำานวนเตม หรอทเรยกวารหสแอสก (ASCII Code) กจะมตงแต 0 ไปจนถง 255 โดยอกขระทมคา 0 ถง 31 จะทำาหนาทเปนอกขระควบคม (Contril Characters)เชน การขนบรรทดใหม และการเวนระยะแทบ เปนตน อกขระทมคา 32 ถง 127 คอกลมของตวอกษร เครองหมายวรรคตอน และสญลกษณ ตางๆ ในภาษาองกฤษ สวนอกขระทมคา 128 ถง 255 จะแตกตางกนไปแลวแตชดอกขระ (Character Set) ถาเปนชดอกขระทมภาษาไทย สวนนกจะเปนตวอกษรในภาษาไทย
6
การเขยนคาสตรง• สตรงแบบ single quote เปนรปแบบทงายทสด โดยใชคำาพดขดเดยว ( ‘ ) ครอบไว เชน
ถาตองการใหเครองหมาย เปนสวนหนงของคาสตรง ใหใชเครองหมาย ‘backslash กำากบไวขางหนา สวนอกขระอนๆ ใหใสลงไปโดยตรงไดเลย ซงรวมถงเครองหมายคำาพดสองขด ( “ ) ดวย การใส backslash ขางหนาอกขระอนๆ จะทำาใหเครองหมาย backslash นนกลายเปนสวนหนงของคาสตรงดวย แทนทจะถกตความเปนความหมายพเศษ
จะแสดงขอความวา Arnold once said: “ I’ll be back”
echo ‘this is a simple string’;
echo ‘Arnold once said: “I\ ‘ ll be back”’;
7
การเขยนคาสตรง• สตรงแบบ double quote
´¨´¬ r� � � ªµ¤®¤µ¥� \n µ¦ ¹Ê¦¦ Ä®¤n� � � � � � (linefeed) ¹ÉÁÈÅ rɤ nµ� � � � � � � � 10 (¦® ° Ê� 10) \r µ¦ ´Â¦n� � � � (carriage return) ¹ÉÁÈÅ rɤ nµ� � � � � � � � 13 \t µ¦Áªo¦³¥³ÂÈĪ °� � � � � � � � (horizontal tab) ¹ÉÁÈÅ rɤ nµ� � � � � � � � 9 \\ Á¦ºÉ° ®¤µ¥� � backslash 1 ª�\$ Á¦ºÉ° ®¤µ¥ ° ¨µ¦r� � � \” Á¦ºÉ° ®¤µ¥ ε¡¼ ° ¸� � � � � � � \0 ¹� � \777 ° ¦³ ɤ nµÂ° ÊÁnµ´ ªÁ Ħ¼µÂ ɦ³ »ÁnoµÁ¥ ªnµ� � � � � � � � � � � � � � � � � � � � � � � \11 ³�
Á¥ Ánµ´� � � � � \t ¹É®¤µ¥ ¹ µ¦Áªo¦³¥³ÂÈĪ °� � � � � � � � � � � � (11µÂ ¤ nµ� � � � �Ánµ´� � � 9 µ ·� � � ) ®¦º° oµÁ¥ ªnµ� � � \101³®¤µ¥ ¹ ª° ¦³� � � � � � AÁ¡¦µ³ªnµ101 µÂ ¤ nµÁnµ´� � � � � � � � 65 µ · ¹ÉÁȦ® ° Ê° ª° ¬¦� � � � � � � � � � � � A ÉÁ°� � �
\x0 ¹� � \xFF ° ¦³ ɤ nµÂ° ÊÁnµ´ ªÁ Ħ¼µ ·® ɦ³ »� � � � � � � � � � � � � � � � � �
8
การเขยนคาสตรง• สตรงแบบ heredoc
สตรงแบบ heredoc จะเรมตนดวย <<< ตามดวย identifier ซงเปนคำาอะไรกได จากนนขนบรรทดใหม และระบสตรงทตองการลงไปโดยสามารถขนบรรทดใหมภายในคาสตรงไดดวย เสรจแลวใหขนบรรทดใหมแลวปดทายดวย identifier คำาเดม
<<< identifierสตรงindentifier
9
สตรงแบบ heredoc<?//กำ�หนดค�สตรงเปนขอมล 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 ออกม�?>
10
การทำางานกบตวอกษรในสตรงสามารถเขาถงเพออานและแกไขตวอกษรแตละตวในสตรงได ซงมรปแบบเหมอนกบการเขาถงสมาชกในอารเรย นนคอใหพมพวงเลบกามป [ ] ตอทายชอตวแปรสตรงแลวระบหมายเลข (Offset) ของตวอกษรทตองการลงไปในวงเลบ โดยตวอกษรตวแรกทางซายจะมหมายเลขเปน 0 สำาหรบตวถดมากจะเปน 1, 2 , 3, ... ไปเรอยๆ ตามลำาดบ เชนถากำาหนดคาสตรงดงน
$str = “Hello World\nFrom\tPHP”;
11
การทำางานกบตวอกษรในสตรง<?$str = "Hello World\nFrom\tPHP"; //กำ�หนดค�สตรงใหกบตวแปร $strecho "$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";}?>
12
การแปลงชนดขอมลอนๆ เปนชนดสตรง
การแปลงคาชนดตางๆ เปนชนดสตรง มเงอนไขดงน
• คาตรรกะ 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 จะถกแปลงเปน “” (สตรงวาง)
13
การแปลงชนดขอมลอนๆ เปนชนดสตรง
<?$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>";?>
14
การลบ Whitespace ออกจากหว/ทายของสตรง
ไดแกฟงกชน trim, Itrim, rtrim และ chop
ฟงกชน 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 ทหมาย
ถงคาวาง)
string trim (string str[, string charlist])string ltrim (string str[, string charlist])string rtrim (string str[, string charlist])
15
การลบ Whitespace ออกจากหว/ทายของสตรง
<?$text = "\t\n สวสดครบ...";//ลบ Whitespaceecho "บรรทด 1: " . trim($text) . "<br>\n";//ลบชองว�ง แทบ และ จดecho "บรรทด 2: " . trim($text, "\t.") . "<br>\n";//ลบอกขระควบคม (อกขระทมรหสแอสก 0 ถง 31)echo "บรรทด 3: " . trim($text,"x00\x1F") . "<br>\n";?>
16
การแปลง Case ของตวอกษรในสตรง
ไดแกฟงกชน strtoupper, strtolower, ucfirst และ ucwords โดยทงสฟงกชนจะรบสตรงเขามาเปนอารกวเมนต แลวใหผลลพธเปนสตรงใหมทเกดจากการนำาตวอกษรบางตวหรอทงหมดในสตรงนนมาแปลง Case ดงรายละเอยดในตารางฟงกชน คำาอธบาย
strtoupper แปลงตวอกษรทงหมดไปเปนตวใหญ (Upper Case)
strtolower แปลงตวอกษรทงหมดไปเปนตวเลก (Lower Case)
ucfirst แปลงตวอกษรแรกของสตรงไปเปนตวใหญucwords แปลงตวอกษรแรกของแตละคำ�ในสตรงไป
เปนตวใหญ
17
การแปลง Case ของตวอกษรในสตรง
<?$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";?>
18
การทำางานกบสตรงยอย• ฟงกชน substrstring 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>";}?>
19
การทำางานกบสตรงยอย• ฟงกชน strpos, strrpos, stripos และ strriposint 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])
20
ฟงกชน strops, strrpos, stripos และ strripos (ตอ)
<?$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>";}?>
21
การทำางานกบสตรงยอย• ฟงกชน 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>";?>
22
การทำางานกบสตรงยอย• ฟงกชน 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>";?>
23
การทำางานกบสตรงยอย• ฟงกชน 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>";?>
24
การเปรยบเทยบสตรง
หลกการเปรยบเทยบสตรง คอ ตวอกษรในตำาแหนงทตรงกนของสตรงทงสองชดจะถกนำามาเปรยบเทยบกนทละค เรมจากตวซายมอสดกอน ถาตวอกษรใดมคาแอสกนอยกวาจะไดวาสตรงนนนอยกวาอกสตรงหนงทนท แตถาหากเทากนจะเปรยบเทยบตวอกษรทสองนบจากซายมอตอไป และถายงเทากนอกกจะใชตวอกษรทอยถดไปทางขวาเรอยๆ ถาหากเปรยบเทยบตวอกษรสตรงทงสองชดไปเรอยๆ แลวยงไมพบความแตกตาง แตปรากฏวาสตรงหนงสนสดแลว ในขณะทอกสตรงยงมตวอกษรอนตามมาอก (พดงายๆ คอสตรงชดหนงเปนสตรงยอยของสตรงอกชดหนง) กรณอยางนสตรงทยาวกวาจะมคามากกวา
25
การเปรยบเทยบสตรง
ใชเปรยบเทยบสตรง 2 ชด โดยฟงกชน strcmp จะสนใจความแตกตางระหวางตวอกษรเลกกบใหญ ในขณะท strcasecmp จะไมสนใจ (ignore case) ผลลพธของฟงกชนทงสองมความหมายดงน
int strcmp (string str1,string str2)int strcasecmp (string str1,string str2)
ผลลพธ ความหมาย
ค�ทนอยกว� 0 (ค�ลบ)
str1นอยกว� str2 (str1ม�กอน str2)
ค�ทม�กกว� 0 (ค�บวก)
str1ม�กกว� str2 (str1ม�ทหลง str2)
0 str1เท�กบ str2
26
การเปรยบเทยบสตรง<?//กำ�หนดตวแปรสตรง 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>";?>
27
การเปรยบเทยบสตรง• ฟงกชน strncmp และ strncasecmp
ใชเปรยบเทยบตวอกษรจำานวน length ตวแรกของสตรง โดยฟงกชน strncmp จะสนใจความแตกตางระหวางตวอกษรเลกกบใหญ ในขณะท strncasecmp จะไมสนใจ (ignore case) ผลลพธ ของฟงกชนทงสองจะมความหมาเยหมอนกบฟงกชน strcmp และ strcasecmp
int strncmp (string str1,string str2 , int length)
28
การเปรยบเทยบสตรง• ฟงกชน strnatcmp และ strnatcasemp
เปรยบเทยบสตรง 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”
int strnatcmp (string str1,string str2)
29
การรวมและแยกสตรง• ฟงกชน implode
string implode(string ตวเชอม,array อ�รเรยทบรรจสตรงต�งๆไว<?$arr =array("ไขด�ว","หมแฮม","แยมสปปะรด");echo "บรรทด 1: " . implode("-",$arr). "<br>";echo "บรรทด 2: " . implode("/",$arr). "<br>";echo "บรรทด 3: " . implode(",",$arr). "<br>";?>
30
การรวมและแยกสตรง• ฟงกชน 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>";}?>
31
การจดรปแบบสตรง• ฟงกชน printf
ฟงกชน printf ใชแสดงสตรงทจดรปแบบ (formatted string)ฟงกชนนจะทำางานเหมอนคำาสง echo ถาระบอารกวเมนตเพยงตวเดยว เชน
ฟงกชน printf จะมประโยชนจรงๆ เมอตองการนำาคาของตวแปรหรอนพจนใสลงไปในสตรงโดยใหจดรปแบบคานนตามทกำาหนด เชน
int printf(string รปแบบ[,mixed ค�[,mixed...]])
printf("สวสดครบ");
$price = 550;printf("สนค�ชนนร�ค� %d บ�ท",$price);
32
ฟงกชน printf (ตอ) สามารถใสคาเขาไปในสตรงไดมากกวา 1 คาพรอมกน โดยตองระบ Format Specifier ภายในสตรงใหมจำานวนและลำาดบสอดคลองกบอารกวเมนตทจะแทนคาลงไป เชน
$item = "บลอคหยอดหมพห";$price = 550;printf("สนค� %s ร�ค� %d บ�ท",$item,$price);
33
ฟงกชน printf (ตอ)ตารางแสดงตวอยางทใชกำาหนด Format Specifier
ตวอกษร ความหมายb เลขจำ�นวนเตมในรปฐ�นสอง (Binary)c ตวอกษรทมค�แอสกเท�กบค�อ�รกวเมนตทกำ�หนดd เลขจำ�นวนเตมในรปฐ�นสบ (Decimal)e เลขจำ�นวนในรปแบบวทย�ศ�สตร (เชน 2.6e+3)u เลขจำ�นวนเตมในรปฐ�นสบแบบไมคดเครองหม�ย
(unsigned)f เลขจำ�นวนทศนยมo เลขจำ�นวนเตมในรปฐ�นแปด (Octal)s สตรงx เลขจำ�นวนเตมในรปฐ�นสบหก (Hexadecimal) โดย
ใชตวอกษรท�งภ�ษ�องกฤษตวเลก (0 ถง9 และ a ถง f )
X เลขจำ�นวนเตมในรปฐ�นสบหก โดยใชตวอกษรภ�ษ�องกฤษตวใหญ (0 ถง 9 และ A ถง F )
34
ฟงกชน printf (ตอ)
<?$name1 = "Pooh";$name2 = "Piglet";echo "<PRE>";printf("%10s\n",$name1);printf("%10s\n",$name2);echo "</PRE>";?>
35
การจดรปแบบสตรง
ฟงกชน sprintf จะจดรปแบบสตรงเชนเดยวกบฟงกชน printf แตจะสงคาสตรงทจดรปแบบแลวกลบมาใหแทนทจะแสดงออกมา จงนำาสตรงทจดรปแบบไปใชงานในโปรแกรมตอไปได
ตวแปร $text จะเกบคาสตรง สนคาชนนราคา “ 550.00 บาท ไว“
string sprintf(string รปแบบ[,mixed ค�[,mixed ...]])
$price = 550;$text = sprintf("สนค�ชนนร�ค� %.2f บ�ท",$price);
36
ฟงกชนเกยวกบแทกในภาษาHTML
• ฟงกชน n12brstring 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);?>
37
ฟงกชนเกยวกบแทกในภาษาHTML
• ฟงกชน htmlspecialcharsstring htmlspecialchars(string str[,int quote_style[,string charset]])
อกขระ HTML Entities
< (เครองหม�ยม�กกว�) < > (เครองหม�ยนอยกว�) >“ (เครองหม�ยคำ�พดสองขด) "‘ (เครองหม�ยคำ�พดขดเดยว) '
& (Ampersand) &
38
ฟงกชน htmlspecialchars (ตอ)
<?$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";?>
39
สรป• สตรง (String) คอกลมของอกขระ (Character) ซงอาจเปนตวอกษร ตวเลข
เครองหมายวรรคตอน หรอสญลกษณพเศษตางๆ กได• การเขยนคาสตรง (String Literal) ในภาษา PHP สามารถทำาได 3 รปแบบ คอ
สตรงแบบ single quote ,สตรงแบบ double quote และสตรงแบบ heredoc• สตรงแบบ double quote และ heredoc จะมการแทนคาใหกบตวแปรตางๆ ท
ปรากฏชออยในสตรงและจะตความ Escape Sequence ซงหมายถงกลมอกขระทนำาหนาดวยเครองหมาย backslash ( \ ) เชน \n จะถกตความเปนการขนบรรทดใหม เปนตน ในขณะทสตรงแบบ single quote จะไมแทนคาใหกบชอตวแปรและไมตความ Escape Sequence แตจะมองเปนตวอกขระตางๆ อยางตรงไปตรงมา
• การเขาถงเพออานหรอเขยนตวอกษรหนงๆ ในสตรงจะมรปแบบเหมอนการเขาถงสมาชกในอารเรย
• เมอตองการแปลงคาใดๆเปนชนดสตรง ใหใชตวดำาเนนการ (string) หรอใชฟงกชน strval
40
สรป ฟงกชนเกยวกบสตรงทอธบายในบทน• ฟงกชนทใชลบ 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
41
Thank You