1 / 41

PHP: Hypertext Preprocessor

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

mairi
Télécharger la présentation

PHP: Hypertext Preprocessor

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. บทที่ 12 [String] PHP:Hypertext Preprocessor สัญญา เครือหงษ์ ภาควิชาวิทยาการคอมพิวเตอร์และเทคโนโลยีสารสนเทศ คณะวิทยาศาสตร์ มหาวิทยาลัยนเรศวร

  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

  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"; //กำหนดค่าสตริงให้กับตัวแปร $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"; } ?>

  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 สวัสดีครับ..."; //ลบ Whitespace echo "บรรทัด 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 ดังรายละเอียดในตาราง

  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. การทำงานกับสตริงย่อย • ฟังก์ชั่น 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>"; } ?>

  19. การทำงานกับสตริงย่อย • ฟังก์ชั่นstrpos, strrpos, stripos และstrripos intstrpos (string str, mixed search[,int offset]) intstrrpos (string str, mixed search[,int offset]) intstripos (string str, mixed search[,int offset]) intstrripos (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,stringreplace,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) ผลลัพธ์ของฟังก์ชั่นทั้งสองมีความหมายดังนี้ intstrcmp(string str1,string str2) intstrcasecmp (string str1,string 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 intstrncmp (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” intstrnatcmp (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 จะมีประโยชน์จริงๆ เมื่อต้องการนำค่าของตัวแปรหรือนิพจน์ใส่ลงไปในสตริงโดยให้จัดรูปแบบค่านั้นตามที่กำหนด เช่น intprintf(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

  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 • ฟังก์ชั่น 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); ?>

  37. ฟังก์ชั่นเกี่ยวกับแท็กในภาษา HTML • ฟังก์ชั่น htmlspecialchars string htmlspecialchars(string str[,intquote_style[,string charset]])

  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

More Related