Welcome

Innovation distinguishes between a leader and a follower.

" นวัตกรรมแยกผู้นำกับผู้ตามออกจากกัน " Steve Jobs

Regular expression เป็นการกำหนดรูปแบบเพื่อการค้นหาข้อความหรือตัวอักษรว่า มีอยู่ในข้อความที่กำหนดหรือไม่

คำว่า Regular expressions ดูเหมือนจะเป็นคำที่น่ากลัวเอามาก ๆ สำหรับนักโปรแกรมมือใหม่ หลายคนไม่อยากรู้จักมันเลยเสียด้วยซ้ำ แต่ขอบอกว่า จริง ๆ แล้วมันไม่ยากแล้วก็มีประโยชน์มากด้วย ไม่ว่าจะเป็น JavaScript หรือ Perl ต่างก็ใช้กันทั้งนั้น จึงไม่เสียหาย ถ้าจะทำความรู้จักกับมันไว้บ้าง

Regular expression เป็นการกำหนดรูปแบบเพื่อการค้นหาข้อความหรือตัวอักษรว่า มีอยู่ในข้อความที่กำหนดหรือไม่ เช่น เราอยากรู้ว่า ข้อความที่มีคนกรอกแบบฟอร์มเข้ามาบนเว็บของเรา มีคำหยาบหรือไม่ เราก็จะใช้ Regular expression นี่แหละ เป็นตัวตรวจสอบ นอกจากจะใช้ตรวจสอบแล้ว ยังสั่งแก้ได้อีกด้วย เช่น จะแก้คำว่า ประสิทธิ์ เป็นคำว่า ประสาท ก็ทำได้ โดยไม่ต้องไปค้นหาเอง แต่สั่งให้โปรแกรมค้นหา โดยใช้ Regular expression นี่แหละ แล้วแทนที่คำคำนั้น ด้วยคำที่เราต้องการ เห็นไหมล่ะว่า Regular expression มีประโยชน์อย่างไร

Regular expression คืออะไร?

ถ้านึกถึงโปรแกรมพิมพ์เอกสาร ที่มีฟังชั่นให้เราสามารถค้นและแก้ไขคำที่พิมพ์โดยการสั่ง replace ก็พอจะเข้าใจ concept ของ Regular expression แล้ว เพียงแต่ว่า Regular expression ทำได้มากกว่าเยอะ นักเขียนโปรแกรมบนเว็บส่วนมากใช้ Regular expression เพื่อตรวจสอบ email เบื้องต้น ว่า ผู้ใช้พิมพ์ email เข้ามาถูกรูปแบบหรือไม่ บางครั้งก็ใช้ในการตรวจสอบรูปแบบ เช่น หมายเลขประจำตัวนักศึกษา ซึ่งมีรูปแบบแน่นอน ถ้าพิมพ์มาไม่ถูกรูปแบบก็แสดงว่าพิมพ์ผิด เป็นต้น

และที่ใช้กันบ่อยมากบนเว็บก็คือ การตรวจสอบข้อมูลบนฟอร์ม ความจริงแล้ว PHP มีฟังชั่นสำหรับตรวจสอบข้อความ (string) อยู่เยอะเหมือนกัน เช่น การตัดช่องว่างหน้าหรือหลังคำ ก็ใช้ฟังชั่น trim เป็นต้น แต่ว่าเสน่ห์ของ Regular expression อยู่ที่ความง่าย ใช่แล้ว Regular expression ใช้ง่าย ไม่ต้องเขียนโปรแกรมยืดยาวก็ทำได้เหมือนกัน ถ้าพอใช้คล่องแล้วก็จะพูดว่า แหมรู้ยังงี้ ใช้ Regular expression เสียก็ดี
     


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


Code: [Select]
<?phpfunction validateEmail($email)
{
$isAtSymbol strpos($email"@");$isDot strpos($email".");
if(
$isAtSymbol && $isDot)
return 
true;
else
return 
false;
}
?>

ตัวอย่างที่ 2


Code: [Select]
<?phpfunction 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 ที่กำหนดไว้ ก็จะคืนค่าที่เป็นเท็จ

รูปแบบ ไวยากรณ์ ของ Regular expression

รูปแบบของ Regular expression ที่ควรรู้จัก มีดังนี้



1. การกำหนดว่า ต้องเป็นตัวแรกของข้อความ:
เช่นเราต้องการตรวจสอบว่า คำที่กำลังตรวจสอบ ขึ้นต้นด้วยคำว่า ?ความ? หรือไม่ เราจะใช้เครื่องหมาย ^ เพื่อระบุว่า ต้องขึ้นต้นด้วยคำคำนี้ ตัวอย่าง


Code: [Select]
<?php echo ereg("^ความ""ความดีของคน"); ?>
อย่างนี้ ค่าที่ได้ คือ จริง หรือ true


Code: [Select]
<?php echo ereg("^ความ""คนไม่ได้ความ"); ?>
อย่างนี้ จะได้ค่าที่เป็นเท็จ หรือ false เพราะ เรากำหนดให้ต้องขึ้นต้นด้วยคำว่า ?ความ? แต่ในคำที่ให้ค้นหา ขึ้นต้นด้วยคำว่า ?คน? จึงทำให้ค่าที่ได้เป็นเท็จ



2. การกำหนดว่า ต้องเป็นตัวสุดท้ายของข้อความ:

เราใช้เครื่องหมาย $ เพื่อดูว่า ข้อความที่จะค้นหานั้น ลงท้ายด้วยคำที่กำหนดหรือไม่


Code: [Select]
<?php echo ereg("ความ$""คนไม่ได้ความ"); ?>
จะได้ค่าที่เป็นจริง เพราะ ข้อความที่นำมาค้น ลงท้ายด้วยคำว่า ?ความ?


Code: [Select]
<?php echo ereg("ความ$""ความดีของคน"); ?>
จะได้ค่าที่เป็นเท็จ หรือ false



3. การค้นหาตัวอักษร:

ถ้าต้องการระบุว่าจะต้องมีตัวอักษรจะเป็นตัวเลขหรือตัวอักษรก็ได้ แต่ไม่ใช่ช่องว่าง เราจะใช้ จุด เช่น


Code: [Select]
<?php echo ereg(".""บ้านเรือน"); ?>
จะได้ค่าที่เป็นจริง


Code: [Select]
<?php echo ereg("."""); ?>
จะได้ค่าที่เป็นเท็จ เพราะสิ่งที่นำมาค้นหาไม่มีอะไรเลย



4. การกำหนดว่า อาจจะมีตัวอักษรที่กำหนดหรือไม่ก็ได้

เราใช้เครื่องหมาย * เพื่อบอกว่าอาจจะมีหรือไม่มีก็ได้


Code: [Select]
<?php echo ereg("ก*""การทำงาน"); ?>
Code: [Select]
<?php echo ereg("ก*""ทำงาน"); ?>
ทั้งสองตัวอย่าง จะให้ค่าที่เป็นจริง เพราะเครื่องหมาย * จะบอกว่ามีตัว ?ก? หรือไม่ก็ได้

มีอีกวิธีหนึ่งที่จะระบุว่า ให้มีตัวอักษรนั้น ในคำหรือไม่ วิธีนี้เราจะใช้เครื่องหมาย ? เช่น


Code: [Select]
<?php echo ereg("ก?""วิธีการทำงาน"); ?>
เป็นการบอกว่า คำที่นำมาค้นหา อาจจะมีตัว ก ไก่ หรือไม่ ก็ได้

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



5. การกำหนดให้มีตัวอักษรที่กำหนด อย่างน้อย 1 ตัว
เราใช้เครื่องหมาย + เพื่อระบุว่า จะต้องมีตัวอักษรนั้นอย่างน้อย 1 ตัว เช่น


Code: [Select]
<?php echo ereg("ก+""วิธีการทำงาน"); ?>
จะได้ค่าที่เป็นจริง เพราะคำว่า ?วิธีการทำงาน? มีตัว ก ไก่ รวมอยู่ด้วย โดยไม่บังคับว่าจะอยู่ที่ไหนในคำ


Code: [Select]
<?php echo ereg("ก+""วิธีทำงาน"); ?>
ตัวอย่างข้างต้นจะให้ค่าที่เป็นเท็จ เพราะคำว่า ?วิธีทำงาน? ไม่มีตัว ก ไก่ อยู่เลย



6. การตรวจสอบช่องว่าง

การตรวจสอบช่องว่าง ให้ใช้ [[:space:]] หรืออาจจะใช้ ? ? แทนก็ได้ แต่การใช้ :space: ซึ่งเป็น class ของ Posix จะหมายความรวมถึง เครื่องหมายอื่น ๆ เช่น tab เครื่องหมายขึ้นบรรทัดใหม่ รวมทั้งการเว้นวรรคด้วย ตัวอย่าง


Code: [Select]
<?php echo ereg("ทองจุล[[:space:]]ขันขาว""ทองจุล ขันขาว"); ?>
จะให้ค่าที่เป็นจริง แต่


Code: [Select]
<?php echo ereg("ทองจุล[[:space:]]ขันขาว""ทองจุลขันขาว"); ?>
จะให้ค่าที่เป็นเท็จ เพราะไม่มีช่องว่างเลย



7. การตรวจสอบเป็นช่วง

ถ้าต้องการตรวจสอบเป็นช่วง เราจะใช้เครื่องหมาย [ และ ] เพื่อคร่อมช่วงที่ต้องการ เช่น ต้องการระบุว่า ต้องเป็นระหว่างเลข 0 ? 9 เท่านั้น เราจะเขียนว่า [0-9] ลองดูตัวอย่างต่อไปนี้


Code: [Select]
<?php// กำหนดให้มีเฉพาะตัวอักษรภาษาไทยเท่านั้น มีตัวเลขที่เป็นภาษาไทยได้ แต่ห้ามมีตัวอักษรภาษาอังกฤษecho ereg("^[ก-๙]+$""ทองจุล๐๑๒๓"); // ให้ค่าที่เป็นจริง?>
ในกรณีของตัวอักษรภาษาไทย ถ้าจะกำหนดไม่ให้มีตัวเลข ต้องกำหนดค่า ระหว่าง ตัว ก ไก่ และ ไม้ตรี ถ้ากำหนดตั้งแต่ ตัว ก-ฮ จะทำให้มีสระไม่ได้ ซึ่งก็จะทำให้ไม่สามารถสะกดตัวเป็นคำได้อย่างสมบูรณ์ขอให้สังเกตว่าในกรณีนี้ก็จะมีวรรคไม่ได้เหมือนกัน เพราะตัวอักษร ช่องว่าง หรือ space อยู่นอกขอบเขตที่กำหนด ถ้าจะให้มี ก็ต้องเพิ่มเข้าไป เช่น


Code: [Select]
<?php echo ereg("^[ก-๙]+[[:space:]]{1}[ก-๙]+$""ทองจุล ขันขาว"); ?>
ในกรณีตัวเลข ถ้าต้องการตรวจดูว่า ข้อความที่กำหนดมีเฉพาะตัวเลขเท่านั้น ไม่ว่าจะเป็นเลขไทย หรือเลขฝรั่ง ให้ตรวจสอบดังนี้


Code: [Select]
<?php echo ereg("^[0-9๐-๙]+$""12345๑๒๓"); ?>
จะได้ค่าที่เป็นจริง เครื่องหมาย ^ แสดงว่าข้อความที่นำมาค้น ต้องขึ้นต้นด้วย เลข 0-9 หรือ ๐-๙ เครื่องหมาย + แสดงว่า ต้องมี จะเป็นช่องว่างมาเฉย ๆ ไม่ได้ และเครื่องหมาย $ แสดงว่า ต้องจบลงด้วยตัวเลขเช่นเดียวกัน



8. การจัดกลุ่มคำ หรือ ข้อความ

ถ้าต้องการจัดกลุ่มคำหรือข้อความให้ใช้เครื่องหมายวงเล็บ () คร่อม เช่น


Code: [Select]
<?php echo ereg("^(ทองจุล|ปรีชา).+$""ปรีชา สุขเกษม"); ?>
ข้อความข้างต้น กำหนดให้จะต้องขึ้นต้นด้วยคำว่า ทองจุล หรือ ปรีชา เพราะมีเครื่องหมาย ^ และต่อด้วยอะไรก็ได้ ดังนั้น คำว่า ปรีชา สุขเกษม จึงให้ค่าที่เป็นจริง แต่ถ้าเป็นชื่อ บำรุง โตรัตน์ ก็จะให้ค่าเป็นเท็จ เพราะไม่อยู่ในเงื่อนไขที่ต้องการ เครื่องหมาย | หมายความว่า อย่างใดอย่างหนึ่ง



9. การตรวจสอบเครื่องหมาย หรือ สัญลักษณ์พิเศษ

เนื่องจากใน Regular expression ใช้เครื่องหมายในไวยากรณ์ ดังนั้นถ้าเราต้องการจะให้ค้นหาเครื่องหมายดังกล่าวในข้อความที่กำหนด จึงจำเป็นต้องบอกให้โปรแกรมรู้ว่า เครื่องหมายที่ใช้นี้ ไม่ใช่เป็นส่วนหนึ่งของไวยากรณ์ ลักษณะนี้ เราเรียกว่าเป็นการ escaping เราจะใช้เครื่องหมาย \ ใส่ไว้หน้าตัวอักษรพิเศษ หรือ สัญลักษณ์นั้น ๆ เช่น \* เป็นการบอกว่า ให้ตรวจหาเครื่องหมาย * ในคำที่ส่งมาเพื่อค้นหา เป็นต้น ในกรณีที่ต้องการให้คำว่า ปรีชา ต้องขึ้นต้นด้วยเครื่องหมาย | เราทำดังนี้


Code: [Select]
<?php echo ereg("^(ทองจุล|\|ปรีชา).+$""ปรีชา สุขเกษม"); ?>
ข้อความข้างบนจะให้ค่าเป็นเท็จ เพราะเรากำหนดให้คำว่า ปรีชา ต้องขึ้นต้นด้วย | ถ้าเปลี่ยนคำว่า ปรีชา สุขเกษม เป็น |ปรีชา สุขเกษม ก็จะได้ค่าที่เป็นจริง
ตัวอักษร หรือสัญลักษณ์พิเศษที่ต้อง escape มีดังนี้ ^, $, (, ), ., [, |, *, ?, +, \, และ {



10. สัญลักษณ์ของ Regular expression สรุปได้ดังนี้


        


สรุป
คิดว่าเท่าที่ยกตัวอย่างมาก็คงจะพอเป็นสังเขป พอรู้จัก Regular expression และการใช้แล้ว สิ่งสำคัญอยู่ที่การคิดวิธีใช้ เช่นต้องการจะกำหนดเงื่อนไขอย่างไร เพื่อให้ได้เงื่อนไขที่เป็นจริง ข้อความที่ต้องการมีลักษณะอย่างไร เป็นต้น แต่ท้ายที่สุดแล้ว บางครั้งก็จำเป็นที่เราจะต้องตรวจสอบด้วยตัวเองอีกครั้ง การกำหนดเงื่อนไข ถ้าผู้ใช้เดาลักษณะเงื่อนไขได้ ก็สามารถที่จะพิมพ์หรือกำหนดข้อความให้ผ่านการกรองได้เหมือนกัน ดังนั้นดีที่สุดจึงต้องมีการตรวจสอบดูอีกครั้ง

http://www.thaijobmarket.com/regularex.html



เขียนโดย : อ.ทองจุล ขันขาว 


ไม่แน่ใจว่าที่ไหนเป็นต้นฉบับกันแน่ ดังนั้นเอาไปหมดเลย
เขาว่ากันว่าต้นฉบับอยู่ที่นี่: http://www.thaijobmarket.com
แต่คัดลอกจาก: http://www.nextproject.net/contents/default.aspx?00103
แต่ไม่แน่ที่นี่ก็อาจจะต้นฉบับ: http://www.expert2you.com/view_article.php?art_id=1027




^beข้อความที่ขึ้นต้นด้วย b และถัดจาก b ตามด้วย e
^[be]ข้อความที่ขึ้นต้นด้วย b หรือ e
[^be]ข้อความที่ไม่ได้ขึ้นต้นด้วย b และ e
ion$ข้อความที่ลงท้ายด้วยหรือจบท้ายด้วย ion
[ion]$ข้อความที่ลงท้ายหรือจบท้ายด้วย i หรือ o หรือ n
\n$ข้อความที่มีสัญลักษณ์ \n (new line) อยู่ท้าย
<H[1-6]>ข้อความที่มี <H1> <H2> <H3> <H4> <H5> หรือ <H6> อยู่ด้วย
<H[^4-6]>ข้อความที่ไม่มี <H4> <H5> และ <H6> อยู่ด้วย
[0-9.]ข้อความที่มีตัวเลขใดๆระหว่าง 0 ถึง 9 หรือ จุด อยู่ด้วย
^Subject$ข้อความที่มีคำว่า Subject เท่านั้น
^(From|Subject|Date):ข้อความที่มีคำว่า From: หรือ Subject: หรือ Date: ขึ้นต้น
^[0-9]+$ข้อความที่มีตัวเลขเท่านั้นและอย่างน้อยหนึ่งตัว
([0-9]+(\.[0-9]+){3})ข้อความที่ตรงตามรูปแบบของหมายเลข IP เช่น 127.0.0.1
^[-+]?[0-9]+(\.[0-9]*)?$ข้อความที่ตรงตามรูปแบบของตัวเลขทศนิยม เช่น -12.345

การใช้งาน regular expression อย่างจริงจังนั้นไม่ใช่เป็นเรื่องง่าย ต้องทำความเข้าใจอย่างจริงจัง และในเอกสารนี้ก็ทำได้แค่นำเสนอเนื้อหาพื้นฐานสำหรับการใช้งานเท่านั้น ถ้าใครสนใจการใช้งานอย่างจริงจัง ในเรื่องของ regular expression ก็สามารถหาหนังสือ สำหรับเรื่องนี้โดยเฉพาะมาอ่านได้ 

คัดลอกจาก: http://www.board.esanupdate.com/index.php/topic,6175.0.html


อักขระส่วนมากใน regular expression จะทำการ match เฉพาะตัวมันเอง เช่น ถ้าเรากำหนดรูปแบบ regular expression ในการค้นหาว่า "cow" เพื่อใช้ในการค้นหา string "Genetic was a cowhand," ผลลัพธ์ที่ได้จะ match กัน เพราะว่าในข้อความนี้มีคำว่า "cow" อยู่ด้วย

อักขระบางตัวมีความหมายพิเศษใน regular expression เช่น caret (^) ที่จุดเริ่มต้นของรูปแบบที่กำหนดใน regular expression เป็นการบอกว่า String ที่นำมาค้นหานั้นจะต้องขึ้นต้นด้วยคำนั้น ๆ เช่น


Code: [Select]
<?php
$bool 
ereg('^cow''Genetic was a cowhand');
echo 
$bool;// false เนื่องจากข้อความนี้ไม่ได้ขึ้นต้นด้วย cow
$bool ereg('^cow''cowabunga!');// true เนื่องจากข้อความนี้ขึ้นต้นด้วย cow?>

ในทางตรงกันข้าม ถ้าเราใช้สัญลักษณ์ dollar sign ($) ไว้ที่จุดสุดท้ายของ regular expression เป็นการบ่งบอกว่า String ที่นำมาค้นหานั้นจะต้องลงท้ายด้วยคำนั้น ๆ เช่น


Code: [Select]
<?php
$bool 
ereg('cow$''Genetic was a cowhand');
echo 
$bool;// false เพราะว่ามันไม่ได้ลงท้ายด้วย cow
$bool ereg('cow$''Don't have a cow);
echo 
$bool;// true เพราะว่ามันลงท้ายด้วย cow?>

ถ้าเราใช้อักขระ (.) ใน regular expression เป็นการบ่งบอกว่ามันจะ match กับอักขระอะไรก็ได้ (เพียงตัวเดียวเท่านั้น


Code: [Select]
<?php
$bool 
ereg('c.t''cat'); // true$bool ereg('c.t''cut'); // true$bool ereg('c.t''c t'); // true$bool ereg('c.t''bat'); // false$bool ereg('c.t''ct'); // false?>

ในกรณีที่เราต้องการค้นหารูปแบบที่มีอักขระพิเศษเหล่านี้ (^, $, .) ด้วย (เรียกว่า metacharacter) เราจะต้องทำการ escape มันด้วย backslash (\) เช่น


Code: [Select]
<?php
$bool 
ereg('\$5\.00''Your bill is $5.00 exactly');// true เพราะว่าเราทำการ escape อักขระพิเศษเหล่านี้ไว้แล้วมันจึง match กับข้อความที่นำมาค้นหา$bool ereg('$5.00''Your bill is $5.00 exactly');// false เพราะอักขระพิเศษ "$" มันจะตีความหมายผิด?>

ค่า Default ของ regular expression จะเป็นคุณสมบัติ case-sensitive ดังนั้นถ้าเรากำหนด regular expression "cow" มันจะไม่ match กับข้อความ string คำว่า "COW" แต่ถ้าต้องการให้มันตรวจสอบแบบสถานะ case-insensitive เราจะต้องใช้ฟังก์ชัน eregi() แทน




คัดลอกจาก: http://www.stepcoding.com/hot/PHP/Regular Expression/การใช้งาน Regular Expression เบื้องต้น.html

 
JUNCTION X © 2013. All Rights Reserved. Powered by Blogger
Top