Я проверил это регулярное выражение, и оно работает.
У меня небольшой совет, не проверяйте количество совпадений в preg_match()
(я обычно видел это).Это очень запутанно, поверь мне.== 0
означает, что он не был найден.Лично я просто использую его в логическом контенте, даже если preg_match()
возвращает целое число (количество совпадений), а не логическое.Но это не очень важно - 0
в PHP равно false
, а другие целые числа true
в логическом контексте.В этом случае оно обычно соответствует вашим ожиданиям - 0 совпадений обычно означают сбой.
Во-вторых, присваивание $collectiondate
отсутствует, кроме false
.Я не знаю, намеренно ли это, но если вы никогда не отправляете какое-либо положительное значение, обычно это null
или false
.В логическом контексте оба эти значения возвращают false
.Фактически, false == null
из-за того, что null
был преобразован в логическое значение (но false !== null
, потому что !==
пропускает любые преобразования (рекомендуется использовать ===
вместо ==
по причинам, указанным в https://stackoverflow.com/a/80649/736054)).