PHP - preg_match和"未知modifier"错误


PHP - preg_match and "Unknown modifier" error

我的测试工作得很好:

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 ..................

问题是什么,我该如何解决?

问题是分隔符/,因为您再次在regexp中使用它。

您必须转义'/或使用其他分隔符,如@:

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

参见文档中的示例#3。还有一个关于分隔符的手册。

表达式中有未转义斜杠。要么将/更改为'/,要么使用不同的分隔符,如@来开始表达式。

错误在这里/.我不知道这个regexp是什么意思,所以你可以把它改成.'.