GORAGOD.com

Regular Expressions (ตอนที่ 5)

Pattern Modifiers เป็น ตัวอักษรความคุมจำนวนหนึง เพื่อบอกให้ฟังก์ชั่นในกลุ่ม preg ปฏิบัติเพิ่มเติมหรือที่เรียกว่า flags กันละครับ ซึ่งค่า flags นี้จะเอาไว้นอก pattern ครับ และ flags เหล่านี้อาจมีใช้ไม่เหมือนกันในแต่ละภาษานะครับ สำหรับที่ผมจะกล่าวถึงต่อไปนี้เป็น flags เฉพาะของ ฟังก์ชั่นในกลุ่ม preg ของ PHP ครับ (ฟังก์ชั่นอื่นหรือภาษาอื่นก็อาจมีใช้ได้เหมือนกันให้ลองทดสอบดูครับ)


รูปแบบการใช้งานทั่วไป

preg_match('/pattern/isu', $data, $match);

isu ที่เห็นคือ flag ครับ โดยแต่ละตัวก็มีความหมายต่างๆกันสามารถนำมาใช้มากกว่า 1 ตัว ใน 1 คำสั่งได้ครับ

ได้แก่

i

Ignore Case สำหรับกำหนดให้ pattern ไม่สนใจตัวอักษรพิมพ์เล็กหรือใหญ่ เช่น /[a-zA-Z]/ และ /[a-z]/i มีความหมายเดียวกัน

m
Multi Line โดยปกติแล้ว ฟังก์ชั่นในกลุ่ม preg จะทำงานกับข้อความบรรทัดเีดียว หรือเรียกง่ายๆว่า ไม่มี อยู่ในข้อความ ถ้าเราใส่ flag นี้เข้าไปจะทำให้มันทำงานกับข้อความหลายบรรทัดได้ครับ
คำสั่งนี้จะไม่ทำงาน หากไม่มี " " ภายในข้อความ หรือไม่มี(^)ห($)ของ pattern ไว้เท่านั้นนะครับ เช่น /^pattern$/m

s
Dot All โดยปกติแล้วเครื่องหมาย . ใน pattern จะหมายถึงตัวอักษรใดๆใน pattern แต่ไม่รวม ถ้าเราใส่ flag นี้ให้กับ pattern จะทำให้ . ใน patter รวมเอา เข้าไว้ใน pattern ด้วย

e
Evaluate replacement สำหรับกำหนดให้ pattern สามารถคำนวณ หรือ ปฏิบัติคำสั่งของ PHP ได้ ตามรูปแบบที่กำหนดไว้ใน pattern

u
UTF-8 ใช้ flag นี้เมื่อต้องการให้ pattern ที่ใช้สนับสนุน UTF-8

U
Ungreedy pattern สำหรับกำหนดให้เครื่องหมาย ? ใน pattern สามารถทำงานกับตัวอักษรซ้ำๆกันได้มากกว่า 1 ตัวอักษร  เช่น

preg_match('/a(_*?).*e/','a___bcde', $match);

แบบนี้ไม่ match ต้องใส่ U

preg_match('/a(_*?).*e/U','a___bcde', $match);