Pregunta PHP - preg_match y error de "modificador desconocido"


Tuve esa prueba que funcionó bien:

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

y como Ereg está en desuso, he reemplazado esa prueba con esta:

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

Pero me sale el siguiente error:

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

¿Cuál es el problema y cómo puedo solucionarlo?


5
2017-12-06 13:32


origen


Respuestas:


El problema es el delimitador / Porque lo usas de nuevo en tu expresión regular.

Tienes que escapar de ello \/ o use otro delimitador como @:

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

Vea el ejemplo # 3 en el Docu. También hay un manual sobre delimitadores.


8
2017-12-06 13:35



Tienes barras sin escapar en la expresión. O bien cambio / a \/ o utilizar un delimitador diferente, como @ para iniciar la expresión.


4
2017-12-06 13:34



el error está aquí /.. No sé qué quiere decir con esta expresión regular, por lo que puede cambiarlo a . o \.


0
2017-12-06 13:35