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);

ผู้เขียน goragod โพสต์เมื่อ 01 มิ.ย. 2552 เปิดดู 11,615 ป้ายกำกับ PHP
^