Advance Ragular Expression

December 23, 2007 – 1:41 am

มาต่อกันภาคสองกับการใช้ Ragular Expression ในระดับสูงขึ้นอีกนิดกับโดยการกำหนดรูปแบบการค้นหาแบบอื่นๆ ได้กว้างขวาง และยืดหยุ่นกว่าที่ผ่านมา…

Operator

สัญลักษณ์ ความหมาย
. เครื่องหมายจุด หมายถึง อะไรก็ได้
[] ใช้ดูว่ามีตัวอักษรที่ต้องการหรือเปล่า
[[:alpha:]] ตรวจสอบว่าเป็นตัวอักษรหรือเปล่า
[[:digit:]] ตรวจสอบว่าเป็นตัวเลขหรือเปล่า
[[:alnum:]] ตรวจสอบว่าเป็นตัวเลขหรือตัวอักษร
[[:space:]] เป็นช่องว่างหรือเปล่า
[[:upper:]] เป็นตัวอักษรใหญ่หรือเปล่า
[[:lower:]] เป็นตัวอักษรเล็กหรือเปล่า
[[:punct:]] เป็นตัวอักษรพิเศษหรือเปล่า เช่น -,!,?

 มาลองดูตัวอย่างกัน
<?
  $str = "My String";
  if(ereg("[Z]“,$str))
  {
  echo”Found”;
  }
  else
  {
  echo”Not Found”;
  }
?>

จากตัวอย่างด้านบน เป็นการถามว่ามีตัวอักษร Z อยู่ในตัวแปร $str หรือเปล่า ผลที่ได้คือ Not Found ให้ลองเปลี่ยนต่อไปเรื่อยๆ เช่น

Z1234     ผลที่ได้คือ Not Found
ZS            ผลที่ได้คือ Found เพราะมีตัว S อยู่

ทีนี้ เราก็สามารถเขียนรูปแบบการค้นหาได้อีกหลากหลายรูปแบบ ตาม Operator ด้านบน เช่น

^[a-zA-Z]$          ตรวจสอบว่าเป็นตัวอักษรทั้งหมดหรือเปล่า เป็นตัวเล็ก ใหญ่ ทั้งหมด หรือเปล่า
^[[:alpha:]]{4}$  เป็นตัวอักษรทั้งหมด และต้องมีเพียง 4 ตัวอักษรด้วย เช่น abcd ไม่นับรวม a123
^[[:digit:]]{4}$    เป็นตัวเลขเท่านั้น แต่ต้องมีแค่ 4 ตัว เช่น 1234 , 5678 ไม่นับรวม 12qw , qw34
^x$                        ต้องเป็นตัว x ตัวเดียวเท่านั้น

และนี่ คือเทคนิคการจัดรูปแบบ โดยการใช้ Ragular Expression ซึ่งจะทำให้การเขียนโปรแกรมง่ายขึ้น มีความยืดหยุ่นในการใช้งานมากขึ้น ยังไงก็ลองประยุกต์ใช้ดูนะครับ ว่าต้องการจัดรูปแบบอย่างไร


Leave a reply

:mrgreen: :| :twisted: :arrow: 8O :) :? 8) :evil: :D :idea: :oops: :P :roll: ;) :cry: :o :lol: :x :( :!: :?:

  1. You will post the following soon.
    Go ahead and start typing.