php: hypertext preprocessor

41
PHP: Hypertext Preprocessor สสสสส สสสสสสสสส สสสสสสสสสสสสสสสสสสสสสสสสสสสสสสสสสสสสสสสสสสสสสส สสสสสสสสสสสสสส สสสสสสสสสสสสสสสสส สสสสส 12 [String] 1

Upload: mairi

Post on 23-Feb-2016

67 views

Category:

Documents


0 download

DESCRIPTION

บทที่ 12 [String]. PHP: Hypertext Preprocessor. สัญญา เครือหงษ์ ภาควิชาวิทยาการคอมพิวเตอร์และเทคโนโลยีสารสนเทศ คณะวิทยาศาสตร์ มหาวิทยาลัยนเรศวร. วัตถุประสงค์การเรียนรู้ประจำบท. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: PHP: Hypertext  Preprocessor

1

PHP:Hypertext Preprocessor

สญญา เครอหงษภาควชาวทยาการคอมพวเตอรและเทคโนโลยสารสนเทศคณะวทยาศาสตร มหาวทยาลยนเรศวร

บทท 12[String]

Page 2: PHP: Hypertext  Preprocessor

2

วตถประสงคการเรยนรประจำาบท• ในบทนจะกลาวถงชนดขอมลพนฐานทสำาคญทสดอกชนดหนง นนกคอสตรง จะไดเรยนรวธการเขยนคาสตรง (String Literal) รปแบบตางๆ การทำางานกบตวอกษรในสตรง และการแปลงขอมลชนดอนๆ มาเปนชนดสตรง

Page 3: PHP: Hypertext  Preprocessor

3

กจกรรมการเรยนการสอน•บรรยายโดยผสอนและใชเอกสารประกอบการสอนของผสอน•สอนโดยใชสอคอมพวเตอรผานเครองฉาย•อภปรายในชนเรยนรวมกน• ใหนสตคนควาเพมเตมจากตำาราและเอกสารทเกยวของ•ทำาแบบฝกหดทายบท

Page 4: PHP: Hypertext  Preprocessor

4

การประเมนผล•ประเมนผลจากการตอบคำาถามและอภปรายในชนเรยน•ทำาแบบฝกหดทายบท•ทำารายงานสง

Page 5: PHP: Hypertext  Preprocessor

5

สตรงในภาษา PHP สตรง (String)คอกลมของอกขระ (Character) ซงอาจเปนตวอกษร ตวเลข เครองหมายเวนวรรคตอน หรอแมแตสญลกษณพเศษตางๆ PHP กำาหนดใหอกขระแตละตวในสตรงมขนาด 1 ไบตหรอ 8 บต ดงนน จงมอกขระทแตกตางกนทงสน 256 ตว ซงถามองเปนคาจำานวนเตม หรอทเรยกวารหสแอสก (ASCII Code) กจะมตงแต 0 ไปจนถง 255 โดยอกขระทมคา 0 ถง 31 จะทำาหนาทเปนอกขระควบคม (Contril Characters)เชน การขนบรรทดใหม และการเวนระยะแทบ เปนตน อกขระทมคา 32 ถง 127 คอกลมของตวอกษร เครองหมายวรรคตอน และสญลกษณ ตางๆ ในภาษาองกฤษ สวนอกขระทมคา 128 ถง 255 จะแตกตางกนไปแลวแตชดอกขระ (Character Set) ถาเปนชดอกขระทมภาษาไทย สวนนกจะเปนตวอกษรในภาษาไทย

Page 6: PHP: Hypertext  Preprocessor

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”’;

Page 7: PHP: Hypertext  Preprocessor

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µ´ ªÁ Ħ¼µ ·® ɦ³ »� � � � � � � � � � � � � � � � � �

Page 8: PHP: Hypertext  Preprocessor

8

การเขยนคาสตรง• สตรงแบบ heredoc

สตรงแบบ heredoc จะเรมตนดวย <<< ตามดวย identifier ซงเปนคำาอะไรกได จากนนขนบรรทดใหม และระบสตรงทตองการลงไปโดยสามารถขนบรรทดใหมภายในคาสตรงไดดวย เสรจแลวใหขนบรรทดใหมแลวปดทายดวย identifier คำาเดม

<<< identifierสตรงindentifier

Page 9: PHP: Hypertext  Preprocessor

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 ออกม�?>

Page 10: PHP: Hypertext  Preprocessor

10

การทำางานกบตวอกษรในสตรงสามารถเขาถงเพออานและแกไขตวอกษรแตละตวในสตรงได ซงมรปแบบเหมอนกบการเขาถงสมาชกในอารเรย นนคอใหพมพวงเลบกามป [ ] ตอทายชอตวแปรสตรงแลวระบหมายเลข (Offset) ของตวอกษรทตองการลงไปในวงเลบ โดยตวอกษรตวแรกทางซายจะมหมายเลขเปน 0 สำาหรบตวถดมากจะเปน 1, 2 , 3, ... ไปเรอยๆ ตามลำาดบ เชนถากำาหนดคาสตรงดงน

$str = “Hello World\nFrom\tPHP”;

Page 11: PHP: Hypertext  Preprocessor

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";}?>

Page 12: PHP: Hypertext  Preprocessor

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 จะถกแปลงเปน “” (สตรงวาง)

Page 13: PHP: Hypertext  Preprocessor

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>";?>

Page 14: PHP: Hypertext  Preprocessor

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])

Page 15: PHP: Hypertext  Preprocessor

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";?>

Page 16: PHP: Hypertext  Preprocessor

16

การแปลง Case ของตวอกษรในสตรง

ไดแกฟงกชน strtoupper, strtolower, ucfirst และ ucwords โดยทงสฟงกชนจะรบสตรงเขามาเปนอารกวเมนต แลวใหผลลพธเปนสตรงใหมทเกดจากการนำาตวอกษรบางตวหรอทงหมดในสตรงนนมาแปลง Case ดงรายละเอยดในตารางฟงกชน คำาอธบาย

strtoupper แปลงตวอกษรทงหมดไปเปนตวใหญ (Upper Case)

strtolower แปลงตวอกษรทงหมดไปเปนตวเลก (Lower Case)

ucfirst แปลงตวอกษรแรกของสตรงไปเปนตวใหญucwords แปลงตวอกษรแรกของแตละคำ�ในสตรงไป

เปนตวใหญ

Page 17: PHP: Hypertext  Preprocessor

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";?>

Page 18: PHP: Hypertext  Preprocessor

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>";}?>

Page 19: PHP: Hypertext  Preprocessor

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])

Page 20: PHP: Hypertext  Preprocessor

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>";}?>

Page 21: PHP: Hypertext  Preprocessor

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>";?>

Page 22: PHP: Hypertext  Preprocessor

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>";?>

Page 23: PHP: Hypertext  Preprocessor

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>";?>

Page 24: PHP: Hypertext  Preprocessor

24

การเปรยบเทยบสตรง

หลกการเปรยบเทยบสตรง คอ ตวอกษรในตำาแหนงทตรงกนของสตรงทงสองชดจะถกนำามาเปรยบเทยบกนทละค เรมจากตวซายมอสดกอน ถาตวอกษรใดมคาแอสกนอยกวาจะไดวาสตรงนนนอยกวาอกสตรงหนงทนท แตถาหากเทากนจะเปรยบเทยบตวอกษรทสองนบจากซายมอตอไป และถายงเทากนอกกจะใชตวอกษรทอยถดไปทางขวาเรอยๆ ถาหากเปรยบเทยบตวอกษรสตรงทงสองชดไปเรอยๆ แลวยงไมพบความแตกตาง แตปรากฏวาสตรงหนงสนสดแลว ในขณะทอกสตรงยงมตวอกษรอนตามมาอก (พดงายๆ คอสตรงชดหนงเปนสตรงยอยของสตรงอกชดหนง) กรณอยางนสตรงทยาวกวาจะมคามากกวา

Page 25: PHP: Hypertext  Preprocessor

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

Page 26: PHP: Hypertext  Preprocessor

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>";?>

Page 27: PHP: Hypertext  Preprocessor

27

การเปรยบเทยบสตรง• ฟงกชน strncmp และ strncasecmp

ใชเปรยบเทยบตวอกษรจำานวน length ตวแรกของสตรง โดยฟงกชน strncmp จะสนใจความแตกตางระหวางตวอกษรเลกกบใหญ ในขณะท strncasecmp จะไมสนใจ (ignore case) ผลลพธ ของฟงกชนทงสองจะมความหมาเยหมอนกบฟงกชน strcmp และ strcasecmp

int strncmp (string str1,string str2 , int length)

Page 28: PHP: Hypertext  Preprocessor

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)

Page 29: PHP: Hypertext  Preprocessor

29

การรวมและแยกสตรง• ฟงกชน implode

string implode(string ตวเชอม,array อ�รเรยทบรรจสตรงต�งๆไว<?$arr =array("ไขด�ว","หมแฮม","แยมสปปะรด");echo "บรรทด 1: " . implode("-",$arr). "<br>";echo "บรรทด 2: " . implode("/",$arr). "<br>";echo "บรรทด 3: " . implode(",",$arr). "<br>";?>

Page 30: PHP: Hypertext  Preprocessor

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>";}?>

Page 31: PHP: Hypertext  Preprocessor

31

การจดรปแบบสตรง• ฟงกชน printf

ฟงกชน printf ใชแสดงสตรงทจดรปแบบ (formatted string)ฟงกชนนจะทำางานเหมอนคำาสง echo ถาระบอารกวเมนตเพยงตวเดยว เชน

ฟงกชน printf จะมประโยชนจรงๆ เมอตองการนำาคาของตวแปรหรอนพจนใสลงไปในสตรงโดยใหจดรปแบบคานนตามทกำาหนด เชน

int printf(string รปแบบ[,mixed ค�[,mixed...]])

printf("สวสดครบ");

$price = 550;printf("สนค�ชนนร�ค� %d บ�ท",$price);

Page 32: PHP: Hypertext  Preprocessor

32

ฟงกชน printf (ตอ) สามารถใสคาเขาไปในสตรงไดมากกวา 1 คาพรอมกน โดยตองระบ Format Specifier ภายในสตรงใหมจำานวนและลำาดบสอดคลองกบอารกวเมนตทจะแทนคาลงไป เชน

$item = "บลอคหยอดหมพห";$price = 550;printf("สนค� %s ร�ค� %d บ�ท",$item,$price);

Page 33: PHP: Hypertext  Preprocessor

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 )

Page 34: PHP: Hypertext  Preprocessor

34

ฟงกชน printf (ตอ)

<?$name1 = "Pooh";$name2 = "Piglet";echo "<PRE>";printf("%10s\n",$name1);printf("%10s\n",$name2);echo "</PRE>";?>

Page 35: PHP: Hypertext  Preprocessor

35

การจดรปแบบสตรง

ฟงกชน sprintf จะจดรปแบบสตรงเชนเดยวกบฟงกชน printf แตจะสงคาสตรงทจดรปแบบแลวกลบมาใหแทนทจะแสดงออกมา จงนำาสตรงทจดรปแบบไปใชงานในโปรแกรมตอไปได

ตวแปร $text จะเกบคาสตรง สนคาชนนราคา “ 550.00 บาท ไว“

string sprintf(string รปแบบ[,mixed ค�[,mixed ...]])

$price = 550;$text = sprintf("สนค�ชนนร�ค� %.2f บ�ท",$price);

Page 36: PHP: Hypertext  Preprocessor

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);?>

Page 37: PHP: Hypertext  Preprocessor

37

ฟงกชนเกยวกบแทกในภาษาHTML

• ฟงกชน htmlspecialcharsstring htmlspecialchars(string str[,int quote_style[,string charset]])

อกขระ HTML Entities

< (เครองหม�ยม�กกว�) &lt; > (เครองหม�ยนอยกว�) &gt;“ (เครองหม�ยคำ�พดสองขด) &quot;‘ (เครองหม�ยคำ�พดขดเดยว) &#039;

& (Ampersand) &amp;

Page 38: PHP: Hypertext  Preprocessor

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";?>

Page 39: PHP: Hypertext  Preprocessor

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

Page 40: PHP: Hypertext  Preprocessor

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

Page 41: PHP: Hypertext  Preprocessor

41

Thank You