2011-12-06 13 views
5

yo tuvimos que prueba que funcionó bien:PHP - preg_match y error "Desconocido modificador"

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 sustituido esa prueba con éste:

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 resolverlo?

+0

posible duplicado de [Convertir expresiones ereg a preg] (http://stackoverflow.com/questions/6270004/converting- ereg-expressions-to-preg) – mario

Respuesta

8

El problema es el delimitador / porque lo usa de nuevo en su expresión regular.

Tienes que escapar de ella \/ o utilizar 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) 

Véase el ejemplo # 3 en el Docu. También hay un manual sobre delimiters.

+0

Agregué un enlace al documento sobre delimitadores. – PiTheNumber

4

Tiene barras oblicuas en la expresión. Cambie / a \/ o utilice un delimitador diferente como @ para iniciar la expresión.

0

error aquí /.. No sé a qué se refiere con esta expresión regular, por lo que puede cambiarla a . o \.

+0

Eso parece evidente: pruebo un formato de fecha y hora, que puede tener 3 separadores para la fecha: [-. /] – Oliver

+0

@Oliver oh, lo siento. es el final de mi día laboral :) – k102

Cuestiones relacionadas