SiamWebCity.com รับสร้างเว็บไซต์ครบวงจร
เลือกภาษา ภาษาอังกฤษ   
หน้าแรก
web
โปรโมทเว็บ
web
รับทำเว็บไซต์
web
สอนทำเว็บ
web
Domain 299บ.
web
ติดต่อเรา
web
 
รับทำเว็บไซต์ครบวงจร รับพัฒนาแอพพลิเคชั่น สำหรับ Facebook iPad iPhone Android รับอบรมการสร้างเว็บไซต์ โปรโมทเว็บไซต์ ดูแลเว็บไซต์ แก้ไขเว็บไซต์ : เริ่มต้นติดต่อที่เรา ที่เหลือเราเป็นผู้จัดการเพื่อท่าน : เราเป็นมากกว่าเครื่องมือที่ช่วยฝ่าวิกฤตเศรษฐกิจ
รายการ
เกี่ยวกับเรา
ทำไมต้องเลือกเรา
ผลงานที่ผ่านมา
เตรียมตัวก่อนทำเว็บ
รับดูแลเว็บไซต์
แอพ Facebook iPhone
โปรแกรมmlm สำเร็จรูป
เช่าโฮสติง
บริการหลังการขาย
เงื่อนไขการรับบริการ
ร่วมงานกับเรา
คำถามที่พบบ่อย
ติดต่อเรา

ฟรีบทความ
คู่มือการใช้งาน  คู่มือการใช้งาน
VDO สอน Dreamweaver  VDO สอน Dreamweaver
Bitcoin บิทคอยน์  Bitcoin บิทคอยน์
PHP MySQL  VDO  เบื้องต้น  PHP MySQL VDO เบื้องต้น
PHP MySQL  เกร็ดความรู้  PHP MySQL เกร็ดความรู้
jQuery  jQuery
HTML5  HTML5
ASP net   MS SQL  ASP net MS SQL
facebook app  facebook app
JSP  JSP
Oracle  Oracle
CSS  CSS
Google  Google
iphone ipad iphone itune ios  iphone ipad iphone itune ios
SEO  SEO
SQL Server  SQL Server
AJAX  AJAX
รดน้ำอัตโนมัติ  สปริงเกอร์  รดน้ำอัตโนมัติ สปริงเกอร์
คอมพิวเตอร์   อินเตอร์เน็ต  คอมพิวเตอร์ อินเตอร์เน็ต
JavaScripts  JavaScripts
cloud computing  cloud computing
xhtml  xhtml
Photoshop  Photoshop
RSS Feed  RSS Feed
wordpress  wordpress
Computer  Computer
MLM ขายตรง ขยายสายงาน  MLM ขายตรง ขยายสายงาน
NUTT's blog  NUTT's blog
ทีวีดิจิตอล DVB T2  ทีวีดิจิตอล DVB T2
Bootstrap CSS  Bootstrap CSS

รับสอน PHP, MySQL, HTML, CSS, Javascripts, FTP, Dreamweaver,PHPMyAdmin, Appserv, WMSEVER, php-Nuke , Joomla, SMF, Oscommerce, Phpbb, Paypal, Adwordsมาเรียนการสร้างเว็บกัน
บริการสอน แนะนำ Adwords , PHP, MySQL, HTML, FTP, SMF, PHPMyAdmin, Dreamweaver, Oscommerce, Photoshop, Flash...

test speed
Display Pagerank
ดูสถิติเว็บไซต์

PHP Regular Expressions Regular Expression


PHP Regular Expressions Regular Expression หรือเรียกสั้นๆ regex เป็นเครื่องมือที่มีประโยชน์มากในการค้นหาตัวอักษร คำ หรือ ข้อความรูปแบบต่างๆ ที่เราต้องการจากข้อความอื่นๆ เมื่อค้นหาได้แล้วเราก็อาจจะแทนที่ด้วยข้อความอื่นๆ ได้

การใช้ regex ไม่ได้มีเฉพาะใน PHP นะครับ อย่างใน text editor เช่น vi emacs หรือ ใน Perl VBscript และ shell program อย่างเช่น awk และ sed ก็มีเหมือนกัน แม้กระทั่งใน MySQL ก็มีเช่นกันครับ

Metacharacters

ถ้าคุณต้องการจะใช้ regex ละก็คงหนีไม่พ้นที่จะต้องทำความรู้จักกับ metacharacters ครับ เพราะนอกจากเราจะใช้ตัวอักษรและตัวเลขต่างๆ ในการสร้างรูปแบบ (pattern) ของตัวอักษรที่เราต้องการจะค้นหาแล้ว เราสามารถใช้ metacharacters มาช่วยสร้างรูปแบบอื่นๆ ที่มีความซับซ้อนมากขึ้นได้

เมื่อลองแบ่งประเภทของ Metacharacters อาจแบ่งได้ดังนี้

1. Metacharacters ที่เกี่ยวกับตำแหน่ง (Positioning)

^ใช้แทนรูปแบบที่ขึ้นต้นด้วยคำที่กำหนดในตำแหน่งเริ่มต้นของข้อความ เช่น "^the" จะตรงกับข้อความใดๆ ที่ขึ้นต้นด้วย the
$ใช้แทนรูปแบบที่ลงท้ายด้วยคำที่กำหนด เช่น "on the table$" จะตรงกับข้อความใดๆ ที่ลงท้ายด้วย on the table
.ใช้แทนตัวอักษรใดๆ 1 ตัวอักษร ยกเว้น newline (n) เช่น "com." จะ ตรงกับ com1 และ coms แต่จะไม่ตรงกับ telecom (เพราะไม่มีตัวอักษรใดต่อท้าย)

2. Metacharacters ที่เกี่ยวกับจำนวนครั้งที่ปรากฏของตัวอักษร

?แทนตัวอักษรว่าสามารถจะไม่ปรากฏหรือปรากฏ 1 ครั้ง เช่น ab? จะตรงกับ "a" หรือ "ab" (ตัว b จะไม่ปรากฏ หรือปรากฏ 1 ครั้ง)
*แทนตัวอักษรว่าสามารถจะไม่ปรากฏหรือปรากฏได้หลายครั้ง เช่น ab* จะตรงกับ "a", "ab", "abb", "abbb", "abbbb" และ "abbbb..."
+แทนตัวอักษรว่าสามารถจะต้องปรากฏ 1 ครั้ง หรือปรากฏได้หลายครั้ง เช่น ab+ จะตรงกับ "ab", "abb", "abbb", "abbbb" และ "abbbb..."
{n}เมื่อ n แทนจำนวนตัวเลข ความหมายก็คือ จะต้องปรากฏ n ครั้ง เช่น ab{4} จะตรงกับ "abbbb" เท่านั้น(b จะต้องปรากฏ 4 ครั้ง)
{n,}เมื่อ n แทนจำนวนตัวเลข ความหมายก็คือ จะต้องปรากฏอย่างน้อย n ครั้ง เช่น ab{2, } จะตรงกับ "abb", "abbb", "abbbb" และ "abbbb..."
{n,m}เมื่อ n และ m แทนจำนวนตัวเลข ความหมายคือ จะต้องปรากฏอย่างน้อย n ครั้งแต่ไม่เกิน m ครั้ง เช่น ab{2,5} จะตรงกับ "abb", "abbbb" และ "abbbbb" เท่านั้น

3. Metacharacters ที่กำหนดกลุ่มและช่วงของตัวอักษร

[ ]แทนตัวอักษรหนึ่งตัว ซึ่งจะปรากฏเป็นตัวอักษรตัวใดตัวหนึ่งใน [ ] เช่น [xy] จะตรงกับ "x", "y", "5x", "abcdx" ถ้าไม่ปรากฏ x หรือ y อยู่เลยก็จะถือว่าไม่ตรง เช่น "qwert"
-ใช้ร่วมกับ [ ] แทนช่วงของตัวอักษรหรือตัวเลข เช่น [a-e] จะตรงกับ "1234a", "hello" แต่จะไม่ตรงกับ "HELLO"

4. Metacharacters อื่นๆ

( )ใช้สำหรับจัดกลุ่มตัวอักษรเข้าด้วยกัน หรือกำหนดกลุ่มของรูปแบบย่อย เช่น a(bc)? จะตรงกับ a หรือ abc (ab จะไม่ปรากฏ หรือปรากฏ 1 ครั้ง)
ใช้เป็น escape character และความหมายอื่นๆ เช่น ถ้าต้องการหา "*" ในข้อความจะต้องใช้ "*"

การใช้ baclslash ในอีกความหมายหนึ่งก็คือ ใช้แทน non-printing character เช่น a แทน alarm, BEL character (hex 07), n แทน newline (hex 0A) r แทน carriage return (hex 0D) และ t แทน tab (hex 09) เป็นต้น

|ใช้เป็นทางเลือกว่าจะเลือกค่าที่อยู่ทางซ้ายหรือขวาของ | เช่น "gr(a|e)y" จะตรงกับคำว่า "gray" หรือ "grey"

5. Metacharacters พิเศษที่แทนกลุ่มของตัวอักษรต่างๆ ซึ่งจะต้องใช้ใน bracket [ ] เสมอ

[:alpha:]จะตรงกับข้อความที่มีตัวอักษรใดๆ ตั้งแต่ a ถึง z หรือ A ถึง Z หรือเขียนได้เป็น [0-9a-zA-Z] ตรงกับ "ABC", "abc", "aBc" แต่จะไม่ตรงกับ "123"
[:alnum:]จะตรงกับข้อความที่มีตัวอักษรและตัวเลข (alphanumeric character) หรือเขียนได้เป็น [0-9a-zA-Z] ซึ่งเท่ากับ [[:alnum:]] เช่น "ab12", "12d" แต่จะไม่ตรงกับ "&*" และ ":;" เป็นต้น
[:digit:]จะตรงกับข้อความที่มีตัวเลขอย่างน้อยหนึ่งตัว เช่น "1", "1a2b3c" แต่จะไม่ตรงกับ "abc" เป็นต้น
[:lower:]จะตรงกับข้อความที่มีตัวอักษรตัวเล็กอย่างน้อยหนึ่งตัว (lowercase characters) เช่น "xyzabc" แต่จะไม่ตรงกับ "ABC", "B123" และ "123" เป็นต้น
[:upper:]จะตรงกับข้อความที่มีตัวอักษรตัวใหญ่อย่างน้อยหนึ่งตัว (lowercase characters) เช่น "XZabc", "A23" แต่จะไม่ตรงกับ "abc", "a123" และ "123" เป็นต้น
[:space:]จะตรงกับข้อความที่มี space อย่างน้อย 1 ตัว เช่น " ", "a bc", "12 3" แต่จะไม่ตรงกับ "ab", "abZX" และ "456" เป็นต้น
[:print:]จะตรงกับข้อความที่มีตัวอักษรใดๆ ที่สามารถแสดงออกมาได้ (printable character) เช่น "abcX", "124" และ " " แต่จะไม่ตรงกับ "n" (newline)
[:graph:]จะตรงกับข้อความที่มี graphical character ยกเว้น space (" ") เช่น "abc", "ab&" และ "1aA" แต่จะไม่ตรงกับ " "
[:xdigit:]จะตรงกับข้อความที่มีเลขฐานสิบหก ได้แก่ a ถึง f , 0 ถึง 9 และ A ถึง F เช่น "1B", "0A" แต่จะไม่ตรงกับ "XZ" เป็นต้น
[:punct:]จะตรงกับข้อความที่มี punctuation อย่างน้อยหนึ่งตัว เช่น "a;", "a23b?" แต่จะไม่ตรงกับ "abc", "123" และ "AB3" เป็นต้น

ลองมาดูตัวอย่างที่ซับซ้อนขึ้นมาหน่อยนะครับ

"id.[0-9]" จะตรงกับข้อความในรูปแบบ id ตามด้วยตัวอักษรใดๆหนึ่งตัวและตัวเลขอีกหนึ่งตัว
เช่น "ida1" "idx2" "idc5abc" "id3456" และ แต่จะไม่ตรงกับ "id5x" เพราะ x ไม่ใช่ตัวเลขระหว่าง 1 ถึง 9

"^id.[0-9]$" จะตรงกับข้อความในรูปแบบ id ตามด้วยตัวอักษรใดๆหนึ่งตัวและตัวเลขอีกหนึ่งตัว
เช่น "ida1" "idx2" แต่จะไม่ตรงกับ "idc5abc" "id3456" "dfidf6sdf" "id5x"

"^.{5}$" จะตรงกับข้อความที่มีตัวอักษรหรือตัวเลข 5 ตัวติดกันเท่านั้น
เช่น "abcde" "12345" "a1b2c" แต่จะไม่ตรงกับ "abcdef" "ab1" "123a5bc" เป็นต้น

"a(bc)*" จะตรงกับข้อความที่มีตัวอักษร a อย่างเดียว หรือตามด้วย bc อย่างน้อย 1 ครั้ง
เช่น "a" "abc" "abcbc" "abcbcbc" แต่จะไม่ตรงกับ "abcb" เป็นต้น

"a(bc){2,4}" จะตรงกับข้อความที่มีตัวอักษร "abcbc" "abcbcbc" และ "abcbcbcbc" เท่านั้น และจะไม่ตรงกับ "abcbcbcbcbc"

"a(bc)?" จะตรงกับข้อความ "a" และ "abc" เท่านั้น

"[a-z]" จะตรงกับข้อความที่มีตัวอักษรตัวเล็กตั้งแต่ a ถึง z ในข้อความ
เช่น "x" "a456xcdf" "1234u" แต่จะไม่ตรงกับ "34116" "@#$%" และ "ABC" เป็นต้น

"^[a-zA-Z]" จะตรงกับข้อความที่ขึ้นต้นด้วยตัวอักษรตัวเล็กหรือตัวใหญ่
เช่น "a999" "A dog" และ "ABCD" แต่จะไม่ตรงกับ "2 dogs" "23sdfadg" เป็นต้น

จากตัวอย่างข้างบนถ้าเราเปลี่ยนเป็น "[^a-zA-Z]" ความหมายจะตรงกับข้อความอะไรก็ได้ที่มีตัวอักษรที่ไม่ใช่ตัวอักษรตัวเล็ก หรือตัวใหญ่ปนอยู่ด้วย เช่น "ab%Sd" "abc45" และ "Abc#" แต่ถ้าต้องการให้ตรงกับตัวอักษรตัวแรกของข้อความจะต้องไม่เป็นตัวอักษรตัว เล็กหรือใหญ่ จะต้องใช้รูปแบบเป็น "^[^a-zA-Z]" ซึ่งจะตรงกับ "12AB" และ "#ABc" แต่จะไม่ตรงกับ "ab%Sd" "abc45" และ "Abc#" ส่วน "[^a-zA-Z]$" ก็จะหมายถึงข้อความอะไรก็ได้ที่ไม่ลงท้ายด้วยตัวอักษรตัวเล็กหรือตัวใหญ่ เช่น "AbcD2" และ "abcd%" เป็นต้น

"[0-9]%" จะตรงกับข้อความที่มีตัวเลขแล้วตามด้วย %
เช่น "90%" "90%df" "a4%" "ad7%" แต่จะไม่ตรงกับ "xx%" เป็นต้น

"[0-9][0-9]%" จะตรงกับข้อความที่มีตัวเลข 2 ตัวแล้วตามด้วย %
เช่น "90%" "90%z" "is 90%" แต่จะไม่ตรงกับ "xx%" "ad7%" เป็นต้น

"[0-9][0-9]%$" จะตรงกับข้อความที่มีตัวเลข 2 ตัวแล้วตามด้วย % เท่านั้น ซึ่งจะต้องไม่มีอะไรต่อท้ายเครื่องหมาย %
เช่น "90%" "is 90%" แต่จะไม่ตรงกับ "90%z" "xx%" "ad7%" เป็นต้น

สำหรับ brackets [ ] นั้นจะมีข้อควรระวังเมื่อเรานำ metacharacters เช่น ^ . [ ] $ * + ? { } เข้าไปไว้ใน brackets [ ] แล้วมันจะกลายเป็นตัวอักษรธรรมดาๆ ตัวหนึ่ง โดยความหมายของ metacharacters จะหายไป
ตัวอย่างเช่น "[*][0-9]" จะตรงกับข้อความที่มีตัว * แล้วตามด้วยตัวเลข เช่น "d9x*8x"

จากตัวอย่างที่แล้ว ถ้าเรานำเครื่องหมาย brackets [ ] ที่ครอบ * อยู่ออก ก็จะกลายเป็น "*[0-9]" ซึ่งเมื่อไม่มีเครื่องหมาย brackets อยู่แล้ว จะทำให้ * กลับไปเป็น metacharacters เช่นเดิม และเมื่อทดลองคำสั่งนี้ เราก็จะได้ error ออกมาเป็น Warning: REG_BADRPT...
เพื่อแก้ปัญหานี้เราสามารถนำ escape character ( ) มาช่วย โดยการใส่ เข้าไปข้างหน้า * ก็จะได้เป็น "*[0-9]" ซึ่งก็จะมีความหมายเท่ากับ "[*][0-9]" นั่นเองครับ

สำหรับ Metacharacters พิเศษที่แทนกลุ่มของตัวอักษรต่างๆ นั้นเราสามารถนำมาใช้กำหนดรูปแบบที่เราต้องการได้ เช่น ^[[:alpha:]] จะมีความหมายเท่ากับ ^[a-zA-Z] ในตัวอย่างที่ผ่านมา หรือเราสามารถเขียนในรูปแบบอื่นๆ ได้ เช่น ถ้าต้องการหาข้อความที่ประกอบด้วยตัวเลข 0 ถึง 9 หรือตัวอักษร a ถึง e ก็สามารถเขียนได้เป็น [[:digit:]a-e] ซึ่งจะตรงกับข้อความ เช่น "1" "15" "a" "b0abczvh" แต่จะไม่ตรงกับ "g" และ "hjvz" เป็นต้น

นอกจากนี้มีข้อที่ควรสังเกตอีกประการหนึ่งก็คือ เราสามารถนำเอา regex 2 อันมารวมกันได้ ซึ่งรูปแบบของการเปรียบเทียบก็จะตรงกับรูปแบบของการรวมกันนั้นๆ เช่น "[a-z][0-9]$" ก็จะตรงกับข้อความที่มีตัวอักษร 2 ตัวท้ายเป็นตัวอักษรตัวเล็กตามด้วยตัวเลข เช่น "ASDFz5" และ "1235d0" และก็จะไม่ตรงกับ "ABCD4" เป็นต้น

ตัวอย่างการนำเอา regex หลายๆ ตัวมารวมกัน เช่น "[0-9]{2}-[0-9]{2}-[0-9]{4}" ซึ่งก็จะเป็นรูปแบบ xx-xx-xxxx โดยที่ x แต่ละตัวแทนตัวเลข เช่น 08-04-2002 เป็นต้น ซึ่งถ้าไม่ได้จัดเรียงตัวเลขรูปแบบนี้ก็จะไม่ตรงกับรูปแบบของ regex ที่กำหนด



Short URL click! Facebook Share
<< Back : เข้าชม 3,399 ครั้ง : ขึ้นไปด้านบน
รับโพสเว็บ รับจ้างโพสเว็บบอร์ด รับโพสเว็บไซด์ webboard Seeding รับจ้างโพสต์ โปรโมทเว็บไซต์ webUB.com



รับทำเว็บไซต์, ทำเว็บ, สร้างเว็บไซต์, รับทำเว็บ, รับออกแบบเว็บ, รับเขียนเว็บ, ออกแบบเว็บ, เว็บดีไซน์, รับสร้างเว็บ, เขียนเว็บไซต์, เว็บ, บริษัท ทำเว็บ, บริษัท สร้างเว็บ, บริษัท ออกแบบเว็บ, บริษัท เขียนเว็บ, ผลงานเว็บ, โฮสติ้ง,Design,Web,เว็บ,เว็บ โฮสติ้ง,เว็ป,โฮสติ้ง ราคาถูก,เว็บไซต์,จดโดเมน,เว็บโฮสติ้ง,Web Download,Web PHP,Flash MX,Graphic Design,Search Engine, Web, Design, Web Host,Web Hosting,Web Page,เขียนเว็บ,เขียนเว็บไซต์,จัดทำเว็บ,จัดทำเว็บไซต์,ทำเว็บ,ทำเว็บไซต์, โปรโมทเว็บ,ฟรี เว็บ,รับเขียนเว็บ,รับทำเว็บ,รับทำเว็บไซต์,รับออกแบบเว็บ,รับออกแบบเว็บไซ ต์,เว็บ สำเร็จรูป,เว็บดีไซน์,เว็ปไซต์, สร้างเว็บ,สร้างเว็บไซต์,ออกแบบ เว็บไซต์,ออกแบบเว็บ,ออกแบบเว็บไซต์,เขียนโปรแกรม,บริการเว็บโฮสติ้ง,ประชา สัมพันธ์เว็บ,รับจัดทำเว็บไซต์,รับสร้างเว็บ,เว็บโปรแกรม,เว็บสวย, บริการจัดทำเว็บไซต์,บริษัทรับจัดทำเว็บไซต์,ให้บริการจัดทำเว็บไซต์, มีประสบการณ์การจัดทำเว็บไซต์, งานบริการเว็บไซต์,ผลงานการเว็บไซต์,ผลงานเว็บไซต์,เว็บไซต์,เว็บไซต์ ปรัชญา "พอเพียง",เว็บไซต์ราคาที่ยุติธรรม,เว็บไซต์ระบบมาตรฐาน,เว็บไซต์ทุกงาน, เว็บไซต์ธุรกิจ, โปรโมทเว็บ,ประชาสัมพันธ์เว็บ,เว็บ,ออกแบบเว็บ,เขียนโปรแกรม,สร้างเว็บ,ออก แบบเว็บไซต์,ทำเว็บ,เว็บสวย,เขียนเว็บไซต์,ทำเว็บไซต์,รับทำเว็บ,รับออกแบบ เว็บ,เขียนเว็บ,รับเขียนเว็บ,รับทำเว็บไซต์,รับจัดทำเว็บไซต์,เว็บโฮสติ้ง, จัดทำเว็บ,เว็บโปรแกรม,เว็บไซต์,เว็บดีไซน์,รับออกแบบเว็บไซต์,สร้างเว็บไซ ต์,เว็บ,จดโดเมน,บริการเว็บโฮสติ้ง,จัดทำเว็บไซต์,โปรแกรมคอมพิวเตอร์

รับทำเว็บไซต์ : โปรโมทเว็บไซต์ : รับเขียนโปรแกรม : สอนสร้างเว็บ : จด Domain name 299บ. : เช่า Hosting : บริการดูแลเว็บไซต์ : รับซื้อ ขาย Rolex : Sitemap.xml
สปริงเกอร์

ข้อสอบ คลังข้อสอบ ระบบข้อสอบ โปรแกรมข้อสอบ ฟรี Exam.in.th
เว็บไซต์ในเครือข่าย: SiamWebCity.com webUB.com EXAM.in.th ข้อสอบ.ไทย ไอเดียแต่งบ้าน homeEST.com
Copyright © 2009-2019 SiamWebCity.COM. ® All rights reserved. หมายเลขทะเบียนประกอบพานิชย์อิเลคทรอนิกส์ : 0447314800321
E-mail, Google Talk : admin [at] siamwebcity.com, Skype: SiamWebCity.com
ขึ้นไปด้านบน