phpregexpreg-matchereg

PHP - preg_match and "Unknown modifier" error


I had that test that worked fine :

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

and as ereg is deprecated, I have replaced that test with this one :

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

But I get the following error :

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

What is the problem and how may I solve it ?


Solution

  • The problem is the delimiter / because you use it in your regexp again.

    You have to escape it \/ or use another delimiter like @:

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

    See the example #3 in the Docu. There is also a manual about delimiters.