PHP preg_match 正規表示比對

有的時候會需要做一些字串的比對,例如找出某字串中是否有符合 abc 這三個英文字母,這時候必須使用正規表示式來處理,不過正規表示式算是比較進階的寫法,需要些程式設計的功力,如果你不懂正規表示式也沒有關係,這篇就是要教你使用 PHP preg_match 基本的字串比對方式,讓你就算不懂正規,也可以做出字串比對的方法。

PHP preg_match 基本語法

int preg_match ( string pattern, string subject [, array matches [, int flags]] )


程式會在 string subject 中進行比對是否有符合 string pattern 條件的結果,array matches 是非必要項目,用來把比對的結果或值放入陣列中,如果沒有用到,可以不用寫沒關係,接著就來看看幾個範例。

PHP preg_match 範例一、找出相符條件
if (preg_match("/1/i", "12345")) {
     echo "條件符合";
} else {
     echo "條件不符合";
}
此範例中的 preg_match("/1/i", "12345") 代表函式會自動比對 12345 這個字串中,是否有 1 這個值,如果有的話就輸出"條件符合",相反的,如果找不到,則輸出"條件不符合",其中 i 的意思是不分大小寫,只要有符合的就可以,所以最後會輸出"條件符合"。

PHP preg_match 範例二、找出完全相同的條件
if (preg_match("/\bdef\b/i", "abcdefg")) {
  echo "條件符合";
} else {
  echo "條件不符合";
}
第二個範例是要找出完全相同的條件,所以此範例會輸出"條件不符合"這樣的結果,因為我們使用了 \b 這樣的條件控制,代表要比對出包含字母與順序都完全符合的條件,否則都算是條件不符合。

以此範例的意思,我們要比對 string pattern 的是 def 這三個字母,而 string subject 的值是 abcdefg,乍看之下應該是有相符才對,可是事實上 string subject 的 def 並非是獨立的,如果我們修改成以下這樣就會符合囉!
if (preg_match("/\bdef\b/i", "abc def g")) {
  echo "條件符合";
} else {
  echo "條件不符合";
}
我們把原本的 adcefg 分成三個區塊,把 def 給獨立出來,這樣的比對結果就是符合啦!

延伸閱讀
© Copyright wibibi.com 網頁設計教學百科 基礎的網頁設計規劃、資料庫與程式設計 Since 2012
PHP Smarty MySQL JQuery Apache W3C