PHP preg_match com regex de trabalho [duplicado]
Esta questão já tem uma resposta aqui:
Validar formato de data no php 7 respostasfunction validateDate( $date )
{
echo $date;
//2012-08-24 20:30:00
if(preg_match('/^([0-9]{4})-([0-9]{2})-([0-9]{2}) ([1-2]{1})([0-9]{1}):([0-5]{1})([0-9]{1}):([0-5]{1})([0-9]{1})$/', $date) >= 1)
{
return true;
}
else
{
return false;
}
}
Isso sempre retorna falso. Eu usei uma única ferramenta para construir a expressão regular e estava funcionando bem lá. O problema começou quando adicionei o "/" ao regex. De alguma forma o PHP parece exigir isso, mas eu não sei por que e eu não sei por que ele quebra meu regex.
Deve retornar TRUE para sth. como "2012-08-24 20:30:00" e FALSE para "asdf2012-08-24 20: 30: 00asdf" ou qualquer coisa que não esteja de acordo com o meu regex
Desde já, obrigado!
----------------------- EDIT Obrigado por todas as suas respostas!
Como alguns usuários apontaram minha função retorna true para a data da amostra "2012-08-24 20:30:00". No entanto, isso só acontece se eu definir manualmente $ date = '2012-08-24 20:30:00'. Se eu chamar a função em outro lugar no meu código com a mesma string que retorna false. Alguem sabe por quê?
----------------------- EDIT2
Sim, desculpe por desperdiçar seu tempo, era de fato algum espaço em branco que foi adicionado à string. usando trim () na minha data antes de chamar minha função dá o resultado correto agora.
Obrigado a todos!