Ragular Expression

December 23, 2007 – 1:08 am

Ragular Expression เป็นเรื่องที่จำเป็นต่อการเขียนโปรแกรม พอสมควร และไม่ใช่เรื่องยาก แต่จะเป็นเรื่องที่มีความสามารถมากเลยทีเดียว เพราะมันคือการควบคุมข้อมูลต่างๆ ที่เราต้องการ ได้อย่างมีประสิทธิภาพ เพราะ ในความเป็นจริง เมื่อเราเขียนโปรแกรมจำพวกที่ต้องมีการควบคุมข้อมูลใน Text Field เช่น ช่อง text field นี้ เราต้องการให้กรอกเฉพาะข้อมูลตัวเลขเท่านั้น ในเรื่องของ Ragular Expression นั้น ช่วยเราได้มากเลยทีเดียว

ตัวอย่างเช่น หากเราเขียนโปรแกรม สมัครสมาชิก แต่ต้องการให้ User กรอก Email เข้ามาด้วย แต่หาก User กรอก email เข้ามาในรูปแบบ asdf@sfff หรือ 111@ddd ซึ่งหากเราเป็น Admin เราก็รู้ว่ามันไม่ใช่ email ที่ใช้งานได้ แต่หากในเรื่องของ php เราจะทำอย่างไรให้มันตรวจสอบข้อมูลเหล่านี้ ว่ามันคือรูปแบบที่ไม่ถูกต้อง ทีนี้ เราต้องมาพึ่งเจ้า Ragular Expression กันแล้วล่ะครับ…

php มันมี function ในการสร้าง Ragular Expression อยู่แล้วคือ ereg และ eregi ซึ่งทั้งสองตัว จะต่างกันที่ความ sensitive คือเจ้าตัว ereg จะสนตัวเล็ก ใหญ่ ส่วน eregi จะไม่สน ลองมาดูตัวอย่างง่ายๆ ดังนี้ครับ

<?
  $str = "My String";
  if(ereg("String",$str))
  {
  echo"Found";
  }
  else
  {
  echo"Not Found";
  }
?>

ผลลัพธ์ของตัวอย่างนี้ จะขึ้นคำว่า Found เพราะว่า function ereg มันก็คล้ายๆกับการค้นหา ซึ่งมันจะมองว่าในตัวแปร $str นั้นมีค่า String อยู่หรือเปล่า แค่นั้นเอง

แต่ Ragular Expression นั้น มันไม่ใช่แค่เอาไว้ค้นหาครับ แต่มันสามารถกำหนดรูปแบบของการค้นหาได้โดยใช้เครื่องหมายต่างๆ(Operator) ยกตัวอย่างเช่น
^ หมายความว่า “ขั้นต้นด้วย”
$ หมายความว่า “ลงท้ายด้วย”

ทีนี้ เรามาลองทดสอบกันดูโดยใช้ Code ด้านบนนั้นแหละ เปลี่ยนนิดหน่อยโดยใส่ Operator  ^ เข้าไป

<?
  $str = "My String";
  if(ereg("^String",$str))
  {
  echo"Found";
  }
  else
  {
  echo"Not Found";
  }
?>

ตอนนี้ผลลัพธ์ จะต้องออกมาเป็น Not Found แน่นอนครับ เพราะว่า ในเงื่อนไขมันบอกว่า ขึ้นต้นด้วย String หรือเปล่า ก็แน่นอนครับ มันไม่เจอ เพราะข้อมูลในตัวแปรมันขึ้นต้นด้วยMy ทีนี้ เราลองมาเปลี่ยนเป็นอีกแบบบ้าง

<?
  $str = "My String";
  if(ereg("String$",$str))
  {
  echo"Found";
  }
  else
  {
  echo"Not Found";
  }
?>

ลองทายกันดูครับว่าผลลัพธ์ออกมาอย่างไร ?
ออกมา เป็น Found อย่างแน่นอนครับ เพราะเรามีเงื่อนไขว่า ลงท้ายด้วย String หรือเปล่า ยังไงล่ะครับ

วันนี้ขอจบตัวอย่างการใช้งาน Ragular Expression อย่างง่ายๆ เพียงเท่านี้แล้วกันครับ  มีต่อภาคสอง>>

  1. iake posted the following on January 9, 2008 at 11:08 am.

    Regular 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.