Preg_match PHP z działającym wyrażeniem regularnym [duplikat]
To pytanie ma już tutaj odpowiedź:
Sprawdź poprawność formatu daty w php 7 odpowiedzifunction 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;
}
}
To zawsze zwraca false. Użyłem jedynego narzędzia do zbudowania wyrażenia regularnego i działało tam dobrze. Problem zaczął się, gdy dodałem „/” do wyrażenia regularnego. W jakiś sposób PHP wydaje się wymagać ich, ale nie wiem dlaczego i nie wiem, dlaczego łamie mój regex.
Powinien zwracać TRUE za sth. jak „2012-08-24 20:30:00” i FAŁSZ dla „asdf2012-08-24 20: 30: 00asdf” lub coś, co nie jest zgodne z moim wyrażeniem regularnym
Z góry dziękuję!
----------------------- EDYTUJ Dziękujemy za wszystkie odpowiedzi!
Jak zauważyli niektórzy użytkownicy, moja funkcja zwraca wartość true dla daty próbnej „2012-08-24 20:30:00”. Jednak robi to tylko wtedy, gdy ręcznie ustawię $ date = '2012-08-24 20:30:00 ”. Jeśli wywołam funkcję w innym miejscu w moim kodzie z dokładnie takim samym łańcuchem, zwraca ona false. Czy ktoś wie dlaczego?
----------------------- EDIT2
Tak, przepraszam za marnowanie czasu, w rzeczywistości był to jakiś biały znak, który został dodany do ciągu. użycie trim () w mojej dacie przed wywołaniem mojej funkcji daje teraz poprawny wynik.
Dziękuję wszystkim!