Соответствие регулярному выражению + символ в URL, если указан пробел.Зачем? - PullRequest
0 голосов
/ 09 июля 2019

Я создал функцию, которая использует PHP FILTER_VALIDATE_REGEXP.

Более того, основное внимание на самом деле уделяется совпадению регулярных выражений.

Регулярное выражение ниже создано для соответствия следующим шаблонам:

2019-07-09 или 2019-07-09 + 15: 30: 05

Вопрос 1 :Почему $ REGEXP_1 возвращает true для плюса и пробела , когда я четко использую пробел?

index.php / reports /? From = 2019-07-09 + 15: 30:05

TRUE

index.php / reports /? From = 2019-07-09 15: 30: 05

TRUE

// ACTIVE REGEX
$REGEXP_1 = '/^([0-9]{4})-([0-1][0-9])-([0-3][0-9])(?:(\s)([0-2][0-9]):([0-5][0-9]):([0-5][0-9]))?$/';

// PREPARE FILTER - STRING
$FILTER_VALIDATE_REGEXP_STRING =  [ 
                                    'filter'  => FILTER_VALIDATE_REGEXP, 
                                    'options' => [ 'regexp' => $REGEXP ] 
                                  ];

.

2019-07-09 или 2019-07-09 + 15: 30: 05

Вопрос 2 :Почему $ REGEXP_2 возвращает false для плюса и пробела , когда я четко использую плюс?

index.php / reports /? From = 2019-07-09 + 15: 30:05

FALSE

index.php / reports /? From = 2019-07-09 15: 30: 05

FALSE

// ACTIVE REGEX
$REGEXP_2 = '/^([0-9]{4})-([0-1][0-9])-([0-3][0-9])(?:(\+)([0-2][0-9]):([0-5][0-9]):([0-5][0-9]))?$/';

// PREPARE FILTER - STRING
$FILTER_VALIDATE_REGEXP_STRING =  [ 
                                    'filter'  => FILTER_VALIDATE_REGEXP, 
                                    'options' => [ 'regexp' => $REGEXP ] 
                                  ];
...