CHAPTER 7 String Functions and Regular Expression REST & SOAP CHAPTER 7 String Functions and Regular Expression
Agenda ฟังก์ชันเกี่ยวกับข้อความ (String Functions) REST & SOAP Agenda ฟังก์ชันเกี่ยวกับข้อความ (String Functions) นิพจน์ปกติ (Regular Expression)
ฟังก์ชันเกี่ยวกับข้อความ การตัดช่องว่างในสตริง - trim(ข้อความ) สำหรับตัดช่องว่างทั้งหมดที่อยู่ด้านหน้าและด้านหลัง ของสตริงทิ้งไป - ltrim(ข้อความ) ตัดช่องว่างที่อยู่ด้านหน้า(ทางซ้าย) ทิ้งไป - chop(ข้อความ) ตัดช่องว่างที่อยู่ด้านหลัง (ทางขวา) ทิ้งไป ข้อความที่อยู่ในวงเล็บ อาจเป็นข้อความจริงๆ หรือเป็นตัวแปรสตริงก็ได้ หากเป็นข้อความจริง ๆ ให้เขียนใน “ ”
trim() <? $str1 =" Computer Science\n\n"; print "String1 = ".$str1."<br>"; echo "Length of String1 = ".strlen($str1)."<br>"; $str2 = trim($str1); echo "Length of String2 = ".strlen($str2)."<br>"; ?>
ltrim() <? $str1 =" Computer Science\n\n"; print "String1 = ".$str1."<br>"; echo "Length of String1 = ".strlen($str1)."<br>"; $str2 = ltrim($str1); echo "Length of String2 = ".strlen($str2)."<br>"; ?>
chop() <? $str1 =" Computer Science\n\n\n"; print "String1 = ".$str1."<br>"; echo "Length of String1 = ".strlen($str1)."<br>"; $str2 = chop($str1); echo "Length of String2 = ".strlen($str2)."<br>"; ?>
nl2br() เปลี่ยน \n ให้เป็น <br> <? $str =" Computer\n Science\nChiang Mai\n\n"; print "String = ".$str."<br>"; echo “use nl2br() <br>"; echo "String = ".nl2br($str); ?>
การเปลี่ยนรูปแบบของตัวอักษร ฟังก์ชัน คำอธิบาย strtoupper(ข้อความ) strtolowar(ข้อความ) ucfirst(ข้อความ) ucwords(ข้อความ) แปลงประโยคให้เป็นตัวพิมพ์ใหญ่ แปลงประโยคให้เป็นตัวพิมพ์เล็ก แปลงตัวอักษรตัวแรกของประโยคให้เป็น ตัวพิมพ์ใหญ่ แปลงตัวอักษรตัวแรกของคำให้เป็นตัวพิมพ์ ใหญ่ ตัวอย่างคำสั่ง $str = “Please ENTER your name”; strtoupper($str); strtolower($str); ucfirst($str); ucwords($str);
การเปรียบเทียบ นับอักษร หาตำแหน่ง สลับ และซ้ำข้อความ การเปรียบเทียบ นับอักษร หาตำแหน่ง สลับ และซ้ำข้อความ ฟังก์ชัน คำอธิบาย strcmp(ข้อความ1,ข้อความ2) strlen(ข้อความ) strpos(ข้อความ,อักษร) stripos(ข้อความ,อักษร) strrpos(ข้อความ,อักษร) strripos(ข้อความ,อักษร) str_repeat(ข้อความ,จำนวน) เปรียบเทียบข้อความทั้งสองว่าเหมือนกันหรือไม่ นับจำนวนตัวอักษรในข้อความ หาตำแหน่งอักษรในข้อความ โดยถือว่าอักษรใหญ่เล็กต่างกัน ตำแหน่งแรกสุดนับเป็น 0 ถ้าไม่พบจะได้ผลลัพธ์เป็น False เหมือนกับ strpos แต่อักษรใหญ่เล็กถือว่าเหมือนกัน หาว่าตำแหน่งสุดท้ายของอักษรนั้นอยู่ตรงไหน โดยถือว่าอักษรใหญ่เล็กต่างกัน เหมือนกับ strrpos แต่อักษรใหญ่เล็กถือว่าเหมือนกัน สำหรับสร้างข้อความซ้ำกันหลาย ๆ ครั้งเท่ากับจำนวนครั้งที่ระบุ
การตัดข้อความบางส่วนออกมาใช้ ฟังก์ชัน คำอธิบาย strstr(ข้อความ,อักษร) stristr(ข้อความ,อักษร) strrchr(ข้อความ,อักษร) substr(ข้อความ,start,length) หาอักษร โดยถือว่าอักษรใหญ่เล็กต่างกัน เมื่อพบแล้วเริ่มตัดเอาข้อความตั้งแต่อักษรนั้นไปจนจบ เหมือนกับ strstr แต่อักษรใหญ่เล็กถือว่าเหมือนกัน หาอักษรเริ่มจากท้ายเข้ามา โดยถือว่าอักษรใหญ่เล็กต่างกัน เมื่อพบแล้วตัดเอาข้อความตั้งแต่ตัวอักษรนั้นไปจนจบข้อความ ตัดข้อความโดยเอาตั้งแต่ตำแหน่ง start (อักษรตัวแรกถือเป็นตำแหน่งที่ 0) และนับไปตามจำนวนที่ต้องการ (length)
นิพจน์ปกติ (Regular Expression) แทนที่ข้อมูลแบบสตริง ซึ่งคล้ายกับการใช้ฟังก์ชัน เปรียบเทียบและแทนที่ของสตริง แต่ regular expression จะสามารถกำหนดรูปแบบของสตริงได้มากกว่า เพื่อใช้ใน การค้นหาสตริงที่ใกล้เคียงกันได้ โดยใช้รูปแบบ(pattern) สำหรับตรวจสอบหลัก ๆ ดังนี้ ^ กำหนดให้เป็นจุดเริ่มต้นข้อความ $ กำหนดให้เป็นจุดสิ้นสุดข้อความ [A-Z] หมายถึงตัวอักษร A ถึง Z [a-z] หมายถึงตัวอักษร a ถึง z [0-9] หมายถึงตัวเลข 0-9
ฟังก์ชันสำหรับตรวจสอบค่าสตริง ฟังก์ชันการค้นหาสตริงย่อย - ereg(pattern,ข้อความ) ใช้สำหรับตรวจสอบข้อความและตัวอักษร ฟังก์ชันจะตี ความตัวอักษรพิมพ์ใหญ่และตัวอักษรพิมพ์เล็กแตกต่างกัน - eregi(pattern,ข้อความ) ใช้สำหรับการตรวจสอบข้อความและตัวอักษร โดยจะ ตีความตัวอักษรพิมพ์ใหญ่และตัวพิมพ์เล็กเหมือนกัน
ตัวอย่าง: การตรวจสอบรหัสไปรษณีย์ <? $zip = “10220”; if (!ereg(^[0-9] [0-9] [0-9] [0-9] [0-9]$)) echo “<br>$zip ผิดรูปแบบ กลับไปแก้ไขใหม่”; else echo “<br>$zip ถูกต้อง”; ?> ลองเปลี่ยนค่าตัวแปร $zip เป็นค่าต่าง ๆ ถูกต้อง K1022 ผิดรูปแบบ กลับไปแก้ไขใหม่ 1022 ผิดรูปแบบ กลับไปแก้ไขใหม่
ตัวอย่าง <? $str1 = "Computer Science, Chiang mai"; $com = "Chiang mai"; echo "Comparision string1<br>"; if (ereg($com,$str1)) echo "Found String<br>"; else echo "Not found <br>"; echo "Comparision string2<br>"; if (ereg($com,$str2)) echo "Comparision string2 with eregi<br>"; if (eregi($com,$str2)) ?>
ฟังก์ชันการแทนที่สตริงย่อย - ereg_replace(pattern,คำใหม่,ข้อความ) ใช้สำหรับแทนที่ข้อความและตัวอักษร ฟังก์ชันจะตี ความตัวอักษรพิมพ์ใหญ่และตัวอักษรพิมพ์เล็กแตกต่างกัน - eregi_replace(pattern,คำใหม่,ข้อความ) ใช้สำหรับแทนที่ข้อความและตัวอักษร โดยจะตีความตัว อักษรพิมพ์ใหญ่และตัวพิมพ์เล็กเหมือนกัน
การแทนที่คำในข้อความ ฟังก์ชัน คำอธิบาย str_replace(คำเดิม,คำใหม่,ข้อความ) stri_replace(คำเดิม,คำใหม่,ข้อความ) ereg_replace(pattern,คำใหม่,ข้อความ) eregi_replace(pattern,คำใหม่,ข้อความ) เปลี่ยนคำในข้อความ โดยแทนที่คำเดิมด้วยคำใหม่ และถือว่าอักษรเล็กใหญ่ต่างกัน เหมือน str_replace แต่จะถือว่าอักษรเล็กใหญ่เหมือนกัน ตรวจสอบข้อความ หากส่วนใดที่ตรงกับ pattern ให้เปลี่ยนแทนที่ด้วยคำใหม่ โดยถือว่าอักษรเล็กใหญ่ต่างกัน เหมือน ereg_replace แต่แต่จะถือว่าอักษรเล็กใหญ่เหมือนกัน
ตัวอย่าง echo “<br> หลัง: $str"; REST & SOAP สำหรับ str_replace และ stri_replace เหมาะสำหรับการค้นหาคำแบบตรง ๆ เพื่อเปลี่ยนเข้าไปแทนที่ เช่น เซ็นเซอร์คำไม่สุภาพ ส่วน ereg_replace และ eregi_replace เหมาะสำหรับการค้นหาในลักษณะเปรียบเทียบรูปแบบ pattern ที่ซับซ้อนกว่า ตัวอย่าง <? $str = “เดินยังกะควาย ควาย ควาย"; echo “<br> ก่อน: $str"; $str=str_replace(“ควาย”, “***”,$str); echo “<br> หลัง: $str"; ?> ผลลัพธ์ ก่อน: เดินยังกะควาย ควาย ควาย หลัง: เดินยังกะ*** *** ***
ฟังก์ชันการแบ่งสตริงแล้วเอาไปเก็บไว้ในอาร์เรย์ - split(pattern,ข้อความ) ใช้สำหรับแบ่งสตริงแล้วไปเก็บไว้ในอาร์เรย์ โดยจะตีความ ตัวอักษรพิมพ์ใหญ่และตัวพิมพ์เล็กต่างกัน - spliti(pattern,ข้อความ) ใช้สำหรับแบ่งสตริง โดยจะตีความตัวอักษรพิมพ์ใหญ่และ ตัวพิมพ์เล็กเหมือนกัน
ตัวอย่าง <? $str1 = "Computer Science, Chiang mai"; echo "before substring<br>"; echo "after substring<br>"; $array1 = split(" ",$str1); for ($i=0;$i<count($array1);$i++) echo "array1[$i]=$array1[$i]<br>"; echo "after substring with c<br>"; $array3 = spliti("c",$str1); for ($i=0;$i<count($array3);$i++) echo "array3[$i]=$array3[$i]<br>"; ?>