2011-12-06 14 views
5

ho avuto quel test che ha funzionato bene:PHP - preg_match ed errore "modificatore di sconosciuto"

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

e come ereg è deprecato, ho sostituito quella prova con questo:

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

Ma Viene visualizzato il seguente errore:

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

Qual è il problema e come posso risolverlo?

+0

possibile duplicato di [Conversione di ereg espressioni su preg] (http://stackoverflow.com/questions/6270004/converting- ereg-expressions-to-preg) – mario

risposta

8

Il problema è il delimitatore / perché lo si utilizza di nuovo nella regexp.

Devi uscirne \/ o utilizzare un altro delimitatore come @:

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

vedere l'esempio # 3 nella Docu. C'è anche un manuale su delimiters.

+0

Ho aggiunto un collegamento al docu sui delimitatori. – PiTheNumber

4

Si hanno barre non tagliate nell'espressione. Cambiare / a \/ o utilizzare un delimitatore diverso come @ per avviare l'espressione.

0

l'errore è qui /.. non so cosa intendi con questa espressione regolare, quindi puoi cambiarlo in . o \.

+0

Ciò sembra evidente: provo un formato data-ora, che può avere 3 separatori per la data: [-. /] – Oliver

+0

@Oliver oh, scusa. è la fine della mia giornata lavorativa :) – k102

Problemi correlati