2013-04-30 61 views
0
$p1 = "[0-9]{4}"; 
$p2 = "[0-9]{1,6}"; 
if($name == null || $id == null) 
{ 
    // Assume that I have a error message set up 
    die(); 
} 
else if(!preg_match($p1,$id)) 
{ 
    die(); 
} 
else 
{ 
    //...Some stuff 
} 

我收到這個當我嘗試提交我的形式:意外「[」正則表達式中

Parse error: syntax error, unknown modifier '{' on Line 29

(第19行是$p1 = "^[0-9]{4}$";)。我俯瞰的東西還是我只是愚蠢?

+3

提示:在編寫正則表達式時使用單引號!如果你不得不逃脫任何東西,那麼這是一場噩夢。 – Ryan 2013-04-30 23:43:02

回答

7

你忘了你的regex delimiters(並且建議minitech,你應該使用單引號來預測未來的轉義問題)。

因此,

$p1="[0-9]{4}$"; 
$p2="[0-9]{1,6}"; 

應該是

$p1='/[0-9]{4}$/'; 
$p2='/[0-9]{1,6}/'; 

這是常規的分隔符。請注意,您可以自由從許多不同的分隔符來選擇(見上面的鏈接),像

$p1='@[0-9]{4}[email protected]'; 
$p2='@[0-9]{1,6}@'; 

這可以方便的,當你的模式包括/,所以你不必逃避它們。