2012-05-25 33 views
0

我開始在PHP中使用正則表達式,並陷入了開始。PHP的正則表達式怪異行爲

我已經寫以下塊: -

$object = "ng_amg_gt-1"; 

switch ($object) 
{ 
    case preg_match('/^ng_amg_gt-[0-9]+$/', $object): 
     echo 'first';  
     break; 

    case preg_match('/^ng_amg_gt-_cg-[0-9]+$/', $object): 
     echo 'second'; 
     break; 

} 

我想 「ng_amg_gt-1」 將匹配的preg_match( '/^ng_amg_gt- [0-9] + $ /',$對象)但有趣的是(令人吃驚)它迴響

我缺少什麼? PS: - 這似乎是一個明顯的問題,但沒有得到任何突破,這就是爲什麼我把它放在這裏。

感謝

+2

的preg_match返回一個int,你正在做一個開關字符串,我甚至不知道這是否有效。只是做一個'如果(preg_match(...))' – tigrang

+0

哦,不,我做了一個錯誤,道歉 –

+0

看看http://stackoverflow.com/a/4046018/372239 – Toto

回答

2

我缺少什麼?

這裏是你錯過了什麼:

$object = "ng_amg_gt-1"; 

if(preg_match('/^ng_amg_gt-[0-9]+$/', $object)) { 
    echo 'first'; 
} else if(preg_match('/^ng_amg_gt-_cg-[0-9]+$/', $object)) { 
    echo 'second'; 
} 
+0

謝謝你的努力,我得到了這個想法 –

1

的preg_match返回模式匹配的數目和你比較,爲字符串

+0

我爲這個失敗提供了一個解決問題的方法 –