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
}

当我尝试提交表单时收到此信息:

解析错误:语法错误,第 29 行上的未知修饰符“{”

(第 19 行是$p1 = "^[0-9]{4}$";。)我是在忽略什么,还是我只是愚蠢?

4

1 回答 1

7

您忘记了正则表达式分隔符(正如 minitech 建议的那样,您应该使用单引号以防将来出现转义问题)。

因此,

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

应该

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

这是传统的分隔符。请注意,您可以从许多不同的分隔符中自由选择(参见上面的链接),例如

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

当您的模式包含 时,这很方便,/因此您不必转义它们。

于 2013-04-30T23:40:22.680 回答