PHP - preg_match和“未知修饰符”错误

时间:2011-12-06 13:32:19

标签: php regex preg-match ereg

我的测试运行良好:

if (ereg("([0-9]{2})[-./]([0-9]{2})[-./]([0-9]{4})[ ]([0-9]{2}):([0-9]{2}):([0-9]{2})", $dateToTest, $tab) == false)

并且由于ereg已弃用,我已将此测试替换为:

if (preg_match("/([0-9]{2})[-./]([0-9]{2})[-./]([0-9]{4})[ ]([0-9]{2}):([0-9]{2}):([0-9]{2})/", $dateToTest, $tab) == false)

但是我收到以下错误:

Warning: preg_match() [function.preg-match]: Unknown modifier '.' in ..................

问题是什么?如何解决?

3 个答案:

答案 0 :(得分:8)

问题是分隔符/,因为您再次在正则表达式中使用它。

您必须将其\/转义或使用其他分隔符,例如@

if (preg_match("@([0-9]{2})[-/.]([0-9]{2})[-/.]([0-9]{4})[ ]([0-9]{2}):([0-9]{2}):([0-9]{2})@", $dateToTest, $tab) == false)

请参阅Docu中的示例#3。还有一本关于delimiters的手册。

答案 1 :(得分:4)

表达式中有未转义的斜杠。将/更改为\/或使用其他分隔符(例如@)启动表达式。

答案 2 :(得分:0)

错误在这里/.。我不知道这个正则表达式是什么意思,因此您可以将其更改为.\.