PHP** มีฟังชั่นที่ใช้ Regular expression อยู่ทั้งหมด 6 ฟังชั่น การใช้ฟังชั่นพวกนี้ เราต้องใส่ argument ที่เป็น Regular expression ฟังชั่นทั้ง 6 ก็ได้แก่:
· ereg: ใช้สำหรับค้นหา คำ หรือ ตัวอักษรที่มีในข้อความที่ต้องการ
· ereg_replace: ใช้สำหรับค้นหาคำ แล้วแทนที่ด้วยคำที่กำหนด
· eregi: ใช้เหมือนกับ ereg แต่ case sensitive นั่นคือ ถือว่า ตัวอักษรภาษาอังกฤษตัวเล็กและตัวใหญ่ (capital letters) เป็นคนละตัวกัน
· eregi_replace: ใช้เหมือนกับ eregi แต่ case sensitive
· split: ใช้ค้นหาคำที่กำหนด และคืนค่าในลักษณะ array
· spliti: ใช้เหมือนกับ split แต่ case sensitive
ทำไมจึงต้อง Regular expressions?
ถ้าท่านเขียนฟังชั่นเองเพื่อตรวจสอบข้อความต่าง ๆ ละก็ หันมาใช้ Regular expression ดีกว่า ลองสำรวจดูซิว่า ท่านทำสิ่งต่อไปนี้หรือไม่
· ท่านเขียนฟังชั่นเพื่อตรวจสอบทีละตัวว่า ในฟอร์มที่ผู้ใช้พิมพ์เข้ามา มีคำแปลกปลอม คำหยาบ หรือตัวอักษรบางอย่าง เช่น เครื่องหมาย @ ในอีเมล์ เป็นต้น
· ท่านเขียนฟังชั่นวน loop เพื่อตรวจสอบข้อความ และแทนที่คำที่พบด้วยคำที่กำหนด
ถ้าใช่ แสดงว่าโปรแกรมของท่านยังมีข้อที่จะปรับปรุงให้ดีขึ้นได้ การเขียนฟังชั่นเองเพื่อให้ทำทั้งสองอย่างข้างต้น นักโปรแกรมทั่วไปเขาไม่นิยมทำกัน นอกจากนี้ยังเป็นการทำให้โปรแกรมทำงานช้าลงอีกด้วย ลองดูตัวอย่างสักสองตัวอย่าง ซึ่งเป็นการตรวจสอบอีเมล์เหมือนกัน
ตัวอย่างที่ 1
<\?
function validateEmail($email) {
$isAtSymbol = strpos($email, "@");
$isDot = strpos($email, ".");
if($isAtSymbol && $isDot)
return true;
else
return false;
}
?\>
ตัวอย่างที่ 2
<\?
function validateEmail($email) {
return eregi('^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.([a-zA-Z]{2,4})$',$email);
}
?\>
ตัวอย่างแรก ดูเข้าท่าดี อ่านเข้าใจง่าย ทำงานเป็นขั้นตอน แต่ลองเปรียบเทียบประสิทธิภาพการทำงานกับตัวอย่างที่ 2 จะเห็นว่า แตกต่างกัน ตัวอย่างที่ 2 ใช้เพียงบรรทัดเดียวในการตรวจสอบอีเมล์ ในขณะที่ตัวอย่างที่ 1 ใช้ตั้งหลายบรรทัด
ตัวอย่างที่ 2 เรียกใช้ฟังชั่น ereg ถ้าหากว่า ตรวจสอบแล้วถูกต้อง ก็จะคืนค่าที่เป็นจริง แต่ถ้าตรวจสอบแล้วไม่เป็นไปตามที่ Regular expression ที่กำหนดไว้ ก็จะคืนค่าที่เป็นเท็จ
ตัวอย่างแรก ดูเข้าท่าดี อ่านเข้าใจง่าย ทำงานเป็นขั้นตอน แต่ลองเปรียบเทียบประสิทธิภาพการทำงานกับตัวอย่างที่ 2 จะเห็นว่า แตกต่างกัน ตัวอย่างที่ 2 ใช้เพียงบรรทัดเดียวในการตรวจสอบอีเมล์ ในขณะที่ตัวอย่างที่ 1 ใช้ตั้งหลายบรรทัด
ตัวอย่างที่ 2 เรียกใช้ฟังชั่น ereg ถ้าหากว่า ตรวจสอบแล้วถูกต้อง ก็จะคืนค่าที่เป็นจริง แต่ถ้าตรวจสอบแล้วไม่เป็นไปตามที่ Regular expression ที่กำหนดไว้ ก็จะคืนค่าที่เป็นเท็จ
รูปแบบ ไวยากรณ์ ของ Regular expression
รูปแบบของ Regular expression ที่ควรรู้จัก มีดังนี้
1. การกำหนดว่า ต้องเป็นตัวแรกของข้อความ:
เช่นเราต้องการตรวจสอบว่า คำที่กำลังตรวจสอบ ขึ้นต้นด้วยคำว่า “ความ” หรือไม่ เราจะใช้เครื่องหมาย ^ เพื่อระบุว่า ต้องขึ้นต้นด้วยคำคำนี้ ตัวอย่าง
อย่างนี้ ค่าที่ได้ คือ จริง หรือ true
อย่างนี้ จะได้ค่าที่เป็นเท็จ หรือ false เพราะ เรากำหนดให้ต้องขึ้นต้นด้วยคำว่า “ความ” แต่ในคำที่ให้ค้นหา ขึ้นต้นด้วยคำว่า “คน” จึงทำให้ค่าที่ได้เป็นเท็จ
2. การกำหนดว่า ต้องเป็นตัวสุดท้ายของข้อความ:
เราใช้เครื่องหมาย $ เพื่อดูว่า ข้อความที่จะค้นหานั้น ลงท้ายด้วยคำที่กำหนดหรือไม่
จะได้ค่าที่เป็นจริง เพราะ ข้อความที่นำมาค้น ลงท้ายด้วยคำว่า “ความ”
จะได้ค่าที่เป็นเท็จ หรือ false
3. การค้นหาตัวอักษร:
ถ้าต้องการระบุว่าจะต้องมีตัวอักษรจะเป็นตัวเลขหรือตัวอักษรก็ได้ แต่ไม่ใช่ช่องว่าง เราจะใช้ จุด เช่น
จะได้ค่าที่เป็นจริง
จะได้ค่าที่เป็นเท็จ เพราะสิ่งที่นำมาค้นหาไม่มีอะไรเลย
4. การกำหนดว่า อาจจะมีตัวอักษรที่กำหนดหรือไม่ก็ได้
เราใช้เครื่องหมาย * เพื่อบอกว่าอาจจะมีหรือไม่มีก็ได้
ทั้งสองตัวอย่าง จะให้ค่าที่เป็นจริง เพราะเครื่องหมาย * จะบอกว่ามีตัว “ก” หรือไม่ก็ได้
มีอีกวิธีหนึ่งที่จะระบุว่า ให้มีตัวอักษรนั้น ในคำหรือไม่ วิธีนี้เราจะใช้เครื่องหมาย ? เช่น
เป็นการบอกว่า คำที่นำมาค้นหา อาจจะมีตัว ก ไก่ หรือไม่ ก็ได้
บางคนอาจจะนึกถามอยู่ในใจว่า แล้วมันมีประโยชน์อย่างไร เพราะมีก็ได้ ไม่มีก็ได้ ไม่เห็นจะแตกต่างอะไรเลย ก็เหมือนกันนั่นแหละ ก็ต้องขอบอกว่า มันมีประโยชน์ตรงที่เราสามารถกำหนดทางเลือกได้ เช่น เราจะตรวจสอบการป้อนข้อมูลตัวเลขว่าผู้ใช้โปรแกรมป้อนเข้ามาถูกหรือไม่ เรารู้ว่าตัวเลขสามารถพิมพ์ได้หลายแบบ บางทีก็มีเครื่องหมายคอมม่าหลังหลักพัน บางทีก็ไม่มี ซึ่งถูกทั้งสองรูปแบบ อย่างนี้ เราก็กำหนดให้เครื่องหมายคอมม่า มีก็ได้ไม่มีก็ได้ ถูกทั้งสองอย่าง เราก็ใช้เครื่องหมายนี้กำกับไว้ข้างหลังเครื่องหมายคอมม่าเสียนั่นเอง ตอนท้ายจะมีตัวอย่างให้ดู เป็นการกำหนดว่า จะพิมพ์เป็นเลขจำนวนเต็ม หรือทศนิยม ก็ได้ คือ มีจุดหรือไม่มีจุดต่อท้าย ก็ได้ โดยการใช้เครื่องหมาย ? นี่แหละ
5. การกำหนดให้มีตัวอักษรที่กำหนด อย่างน้อย 1 ตัว
เราใช้เครื่องหมาย + เพื่อระบุว่า จะต้องมีตัวอักษรนั้นอย่างน้อย 1 ตัว เช่น
จะได้ค่าที่เป็นจริง เพราะคำว่า “วิธีการทำงาน” มีตัว ก ไก่ รวมอยู่ด้วย โดยไม่บังคับว่าจะอยู่ที่ไหนในคำ
ตัวอย่างข้างต้นจะให้ค่าที่เป็นเท็จ เพราะคำว่า “วิธีทำงาน” ไม่มีตัว ก ไก่ อยู่เลย
6. การตรวจสอบช่องว่าง
การตรวจสอบช่องว่าง ให้ใช้ [[:space:]] หรืออาจจะใช้ “ “ แทนก็ได้ แต่การใช้ :space: ซึ่งเป็น class ของ Posix จะหมายความรวมถึง เครื่องหมายอื่น ๆ เช่น tab เครื่องหมายขึ้นบรรทัดใหม่ รวมทั้งการเว้นวรรคด้วย ตัวอย่าง
จะให้ค่าที่เป็นจริง แต่
จะให้ค่าที่เป็นเท็จ เพราะไม่มีช่องว่างเลย
7. การตรวจสอบเป็นช่วง
ถ้าต้องการตรวจสอบเป็นช่วง เราจะใช้เครื่องหมาย [ และ ] เพื่อคร่อมช่วงที่ต้องการ เช่น ต้องการระบุว่า ต้องเป็นระหว่างเลข 0 – 9 เท่านั้น เราจะเขียนว่า [0-9] ลองดูตัวอย่างต่อไปนี้
// กำหนดให้มีเฉพาะตัวอักษรภาษาไทยเท่านั้น มีตัวเลขที่เป็นภาษาไทยได้ แต่ห้ามมีตัวอักษรภาษาอังกฤษ
echo ereg("^[ก-๙]+$", "ทองจุล๐๑๒๓"); // ให้ค่าที่เป็นจริง
?>
ในกรณีของตัวอักษรภาษาไทย ถ้าจะกำหนดไม่ให้มีตัวเลข ต้องกำหนดค่า ระหว่าง ตัว ก ไก่ และ ไม้ตรี ถ้ากำหนดตั้งแต่ ตัว ก-ฮ จะทำให้มีสระไม่ได้ ซึ่งก็จะทำให้ไม่สามารถสะกดตัวเป็นคำได้อย่างสมบูรณ์
ขอให้สังเกตว่าในกรณีนี้ก็จะมีวรรคไม่ได้เหมือนกัน เพราะตัวอักษร ช่องว่าง หรือ space อยู่นอกขอบเขตที่กำหนด ถ้าจะให้มี ก็ต้องเพิ่มเข้าไป เช่น
ในกรณีตัวเลข ถ้าต้องการตรวจดูว่า ข้อความที่กำหนดมีเฉพาะตัวเลขเท่านั้น ไม่ว่าจะเป็นเลขไทย หรือเลขฝรั่ง ให้ตรวจสอบดังนี้
จะได้ค่าที่เป็นจริง เครื่องหมาย ^ แสดงว่าข้อความที่นำมาค้น ต้องขึ้นต้นด้วย เลข 0-9 หรือ ๐-๙ เครื่องหมาย + แสดงว่า ต้องมี จะเป็นช่องว่างมาเฉย ๆ ไม่ได้ และเครื่องหมาย $ แสดงว่า ต้องจบลงด้วยตัวเลขเช่นเดียวกัน
8. การจัดกลุ่มคำ หรือ ข้อความ
ถ้าต้องการจัดกลุ่มคำหรือข้อความให้ใช้เครื่องหมายวงเล็บ () คร่อม เช่น
ข้อความข้างต้น กำหนดให้จะต้องขึ้นต้นด้วยคำว่า ทองจุล หรือ ปรีชา เพราะมีเครื่องหมาย ^ และต่อด้วยอะไรก็ได้ ดังนั้น คำว่า ปรีชา สุขเกษม จึงให้ค่าที่เป็นจริง แต่ถ้าเป็นชื่อ บำรุง โตรัตน์ ก็จะให้ค่าเป็นเท็จ เพราะไม่อยู่ในเงื่อนไขที่ต้องการ เครื่องหมาย | หมายความว่า อย่างใดอย่างหนึ่ง
9. การตรวจสอบเครื่องหมาย หรือ สัญลักษณ์พิเศษ
เนื่องจากใน Regular expression ใช้เครื่องหมายในไวยากรณ์ ดังนั้นถ้าเราต้องการจะให้ค้นหาเครื่องหมายดังกล่าวในข้อความที่กำหนด จึงจำเป็นต้องบอกให้โปรแกรมรู้ว่า เครื่องหมายที่ใช้นี้ ไม่ใช่เป็นส่วนหนึ่งของไวยากรณ์ ลักษณะนี้ เราเรียกว่าเป็นการ escaping เราจะใช้เครื่องหมาย \ ใส่ไว้หน้าตัวอักษรพิเศษ หรือ สัญลักษณ์นั้น ๆ เช่น \* เป็นการบอกว่า ให้ตรวจหาเครื่องหมาย * ในคำที่ส่งมาเพื่อค้นหา เป็นต้น ในกรณีที่ต้องการให้คำว่า ปรีชา ต้องขึ้นต้นด้วยเครื่องหมาย | เราทำดังนี้
ข้อความข้างบนจะให้ค่าเป็นเท็จ เพราะเรากำหนดให้คำว่า ปรีชา ต้องขึ้นต้นด้วย | ถ้าเปลี่ยนคำว่า ปรีชา สุขเกษม เป็น |ปรีชา สุขเกษม ก็จะได้ค่าที่เป็นจริง
ตัวอักษร หรือสัญลักษณ์พิเศษที่ต้อง escape มีดังนี้ ^, $, (, ), ., [, |, *, ?, +, \, และ {
10. สัญลักษณ์ของ Regular expression สรุปได้ดังนี้
^
คำ/อักษรที่อยู่หน้าเครื่องหมายนี้ ต้องเป็นคำขึ้นต้นของข้อความที่นำมาตรวจสอบเช่น “^การ” เป็นการกำหนดว่า คำที่นำมาตรวจสอบต้องขึ้นต้นด้วยคำว่า การ เช่น “การทำดี” “การบ้าน” เป็นต้น คำพวกนี้จะผ่านการทดสอบ
$
คำ/อักษรที่อยู่หน้าเครื่องหมายนี้ ต้องอยู่ตอนท้ายของข้อความที่นำมาตรวจสอบ เช่น “มา$” จะถือว่าคำต่อไปนี้ถูกตามเงื่อนไข “ตามา” “ขอขมา” หรือแม้แต่คำว่า “หมา” แต่คำว่า “ทำดี” จะไม่ผ่าน เพราะไม่ได้ลงท้ายด้วยคำว่า “มา” ตามเงื่อนไขนั่นเอง
+
คำ/อักษรที่อยู่หน้าเครื่องหมายนี้ ต้องมีปรากฏในคำที่นำมาตรวจสอบ อย่างน้อย 1 ตัว เช่น “ท+” จะถือว่าคำต่อไปนี้ผ่านการตรวจสอบ เช่น “ทองจุล” “วันทนา” “ถนนหนทางทุกแห่ง”
?
คำ/อักษรที่อยู่หน้าเครื่องหมายนี้ อาจะมีปรากฏในคำที่นำมาตรวจสอบ หรือไม่ก็ได้ ถ้ามีจะมีกี่ตัวก็ได้
“ก?ข+$” หมายถึง อาจจะมีด้วยตัว ก และอักษรตัวสุดท้ายต้องมีตัว ข อย่างน้อย 1 ตัว (เครื่องหมาย + แสดงว่ามีอย่างน้อย 1 และ เครื่องหมาย $ แสดงว่าเป็นตัวสุดท้าย)
*
เหมือนกับ ?
\s
ช่องว่าง หรือ whitespace
.
ใช้แทนตัวอักษรอะไรก็ได้
· “ก.[0-9]” หมายถึง ตัว ก ตามด้วยตัวอักษรอะไรก็ได้ และต่อด้วยเลขอารบิค เลข 0-9
· “^.{3}$” หมายถึง ต้องมีตัวอักษรเพียง 3 ตัวเท่านั้น เป็นตัวเลข ตัวอักษร ภาษาไทย ภาษาอังกฤษ ได้ทั้งนั้น
[ ]
ใช้ระบุตำแหน่งในคำว่า ในตำแหน่งนี้จะมีตัวอักษรอะไรได้บ้าง เช่น
* “[นร]” เป็นการกำหนดว่า คำที่นำมาตรวจสอบ ต้องเป็นตัว น หรือ ตัว ร เท่านั้นจึงจะผ่าน มีความหมายเช่นเดียวกับ “น|ร”
* “[ก-ค]” เป็นการบอกว่า คำที่นำมาจะต้องเป็น ตัว ก ข ค เท่านั้น เช่น ในกรณีเลขประจำตัวที่ขึ้นต้นด้วย ก ข หรือ ค เท่านั้น ถ้าพิมพ์ตัวแรกเป็นตัวอักษรตัวอื่นก็แสดงว่าพิมพ์ผิด เราจะเขียนได้ดังนี้ ^[ก-ค]
* “^[a-zA-Z]” เป็นการบอกว่า คำที่นำมาตรวจสอบต้องขึ้นต้นด้วยตัวอักษร จะเป็นตัวเล็ก คือ a ถึง z หรือ ตัวใหญ่ คือ A ถึง Z ก็ได้
* “[0-9๐-๙]%” เป็นการบอกว่า ให้มีตัวเลข 1 ตัว เลขอะไรก็ได้ เลข 0 ถึง เลข 9 เป็นได้ทั้งเลขไทยและอารบิค ต่อด้วยเครื่องหมาย %
* [ก-๙] ตัว ก ถึง ฮ รวมทั้งสระทุกตัว และ ตัวเลขไทย ๐ ถึง ๙
* [0-9๐-๙] เลข 0-9 ทั้งเลขไทยและฝรั่ง
* ^[0-9๐-๙]+$ ให้มีเฉพาะตัวเลข 0-9 เลขไทยหรือเลขฝรั่งก็ได้ แต่ห้ามมีตัวอักษรใด ๆ
* "^[กข]{3}[-][0-9]$" ขึ้นต้นด้วยตัว ก หรือ ข จำนวน 3 ตัว ต่อด้วยเครื่องหมาย – และจบด้วยตัวเลขอารบิค เลข 0-9 เช่น “กขก-5” “กกก-3” เป็นต้น สิ่งต่อไปนี้จะไม่ผ่านหรือเป็นเท็จ เช่น “กกกขข” เพราะ ตัวที่ 4 ไม่ใช้เครื่องหมาย – และตัวสุดท้ายไม่ใช่ตัวเลข “ขขข-๘” ตัวเลขสุดท้ายเป็นเลขไทย
ไม่ว่าตัวอักษร หรือสัญลักษณ์ใด ๆ ที่อยู่ภายในเครื่องหมาย [ ] จะกลายเป็นสัญลักษณ์ธรรมดา เช่น + กลายเป็นเครื่องหมายบวก แทนที่จะหมายถึงว่า ต้องมีตัวอักษรอย่างน้อย 1 ตัว
{ }
แสดงจำนวนครั้งที่ซ้ำกัน เช่น
* “กข{2}” หมายถึงให้มีตัว ข จำนวน 2 ตัว เช่น “กขข”
* “กข{2,} หมายถึงให้มีตัว ข อย่างน้อย 2 ตัว เช่น “กขขขข”
* “กข{3,5} หมายถึงให้มีตัว ข จำนวน 3-5 ตัวเท่านั้น คือ “กขขข” “กขขขข” และ “กขขขขข”
( )
ใช้รวมกลุ่มเข้าด้วยกันเป็นส่วนเดียวกัน เช่น
* “ก(ขค)*” หมายถึง ตัว ก และอาจจะตามด้วยตัว ขค หรือไม่มีตัว ขค ก็ได้ เครื่องหมาย * แสดงว่าจะมีหรือไม่ก็ได้
* “ก(ขค){1,5}” หมายถึง ตัว ก แล้วจะตามด้วย ขค จำนวน 1-5 ชุด เช่น “กขคขคขค” หรือ “กขคขค” ก็ได้
|
เสนอทางเลือกอย่างใดอย่างหนึ่ง เช่น
* “การ|ความ” เป็นการบอกว่า จะใช้คำว่า การ หรือ ความ ก็ได้
* “(ก|ขค)งจ” เช่น กงจ หรือ ขคงจ ก็ได้
^[1-9][0-9]*$
ขึ้นต้นด้วยเลข 1-9 และอาจจะต่อด้วย เลข 0-9 กี่ตัวก็ได้ ในกรณีนี้ ถ้าเป็นเลข 0 ก็จะไม่ผ่าน จะผ่านตั้งแต่ 1 2 3 4 ไปเรื่อย ๆ
^(0|[1-9][0-9]*)$
อาจจะขึ้นต้นด้วยเลข 0 หรือเลข 1-9 ก็ได้ และอาจจะต่อด้วยเลข 0-9 ในกรณีนี้ เราใช้ตรวจสอบการพิมพ์ที่เป็นตัวเลขตั้งแต่ 0 ขึ้นไป ถ้ามีตัวอักษร ก็จะไม่ผ่านการตรวจสอบ หรือ เป็นเท็จ นั่นเอง
^(0|-?[1-9][0-9]*)$
เหมือน ^(0|[1-9][0-9]*)$ เพียงแต่ ถ้าไม่ขึ้นต้นด้วยเลข 0 สามารถมีเครื่องหมาย ลบ ได้ หรือจะไม่มีเครื่องหมายลบ ก็ได้ เครื่องหมาย ? แสดงว่า จะมีหรือไม่มี ก็ได้
^[0-9]+(\.[0-9]+)?$
ขึ้นต้นด้วย 0-9 อย่างน้อย 1 ตัว และอาจจะมี จุดและต่อด้วยตัวเลข 0-9 อย่างน้อย 1 ตัว อย่างนี้ เป็นการบอกว่าจะทศนิยมหรือไม่มีก็ได้ (สังเกตเครื่องหมาย ? อยู่หลังกลุ่มทั้งหมดซึ่งอยู่ในวงเล็บ เป็นการบอกว่า กลุ่มนี้ คือ (\.[0-9]+) จะมีหรือไม่มีก็ได้) แต่จะมีแค่ จุดเฉย ๆ เช่น 15. อย่างนี้ไม่ได้ ต้องเป็น 15.2 หรือ 15.38 ก็ได้ (เพราะเครื่องหมาย + อยู่หลัง [0-9] แสดงว่า ตำแหน่งนี้ คือต่อจาก จุด ยังไง ๆ ก็ต้องมีตัวเลข 0 ถึง 9 อย่างน้อย 1 ตัว จะเป็น 2 ตัว 5 ตัว 10 ตัว ก็ได้)
^[0-9]+(\.[0-9]{2})?$
เหมือนข้างบน แต่บังคับว่า ถ้ามีทศนิยม ทศนิยมต้องมี 2 ตำแหน่งเท่านั้น เครื่องหมาย {} กำหนดว่าจะต้องมีซ้ำกี่ครั้ง
^[0-9]+(\.[0-9]{1,2})?$
เหมือนข้างบน แต่อนุญาตให้มีทศนิยม 1 หรือ 2 ตำแหน่ง สังเกตการเขียนตัวเลข ในระหว่างเครื่องหมาย { และ }
^[0-9]{1,3}(,[0-9]{3})*(\.[0-9]{1,2})?$
ต้องขึ้นต้นด้วยตัวเลข 0-9 หรือ อาจจะตามด้วยเครื่องหมาย คอมม่า และตัวเลข 0-9 อีก 3 ตัว และอาจจะต่อด้วยทศนิยม 1 หรือ 2 ตำแหน่ง
^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(\.[0-9]{1,2})?$
เหมือนข้างบน แต่กำหนดให้การมีเครื่องหมาย คอมม่า อาจจะมีหรือไม่มีก็ได้ วิธีกำหนดทางเลือกใช้เครื่องหมาย | แทนที่จะใช้ ? การเลือกใช้ต้องอยู่ที่เราจะตัดสินใจว่าจะเลือกใช้อะไรจึงจะเหมาะสม นี่แหละเสน่ห์ของการเขียนโปรแกรม มีวิธีการหลายอย่างที่จะได้มาซึ่งผลลัพธ์อย่างเดียวกัน แต่อย่างไหนจะเหมาะ ต้องเลือกดู เลือกใช้ให้เหมาะสม
สรุป
คิดว่าเท่าที่ยกตัวอย่างมาก็คงจะพอเป็นสังเขป พอรู้จัก Regular expression และการใช้แล้ว สิ่งสำคัญอยู่ที่การคิดวิธีใช้ เช่นต้องการจะกำหนดเงื่อนไขอย่างไร เพื่อให้ได้เงื่อนไขที่เป็นจริง ข้อความที่ต้องการมีลักษณะอย่างไร เป็นต้น แต่ท้ายที่สุดแล้ว บางครั้งก็จำเป็นที่เราจะต้องตรวจสอบด้วยตัวเองอีกครั้ง การกำหนดเงื่อนไข ถ้าผู้ใช้เดาลักษณะเงื่อนไขได้ ก็สามารถที่จะพิมพ์หรือกำหนดข้อความให้ผ่านการกรองได้เหมือนกัน ดังนั้นดีที่สุดจึงต้องมีการตรวจสอบดูอีกครั้ง
* ความรู้พื้นฐาน: PHP เบื้องต้น และ การสร้าง function
** หมายเหตุ ใน PHP มีฟังชั่นที่เกี่ยวกับ regular expression อยุ่ 2 แบบ คือ แบบ Perl5 และแบบ Posix ในบทความนี้จะเอาเฉพาะแบบ Posix เท่านั้น ถ้าต้องการศึกษาแบบ Perl 5 ให้ดูที่ PHP.net
Credit : อ. ทองจุล ขันขาว