2013-04-30 56 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}@'; 

这可以方便的,当你的模式包括/,所以你不必逃避它们。