Лучший способ объяснить мою проблему - просто показать вам.
Строка ввода:
/04-11-2010/12:45/
Регулярное выражение для получения даты и времени:
preg_match('@/(\d\d)-(\d\d)-(\d\d\d\d)/(\d\d):(\d\d)/@', $input, $matches);
Массив соответствий PHP:
Array
(
[0] => /01-11-2010/12:45/
[1] => 01
[2] => 11
[3] => 2010
[4] => 12
[5] => 45
)
Теперь приведенное выше регулярное выражение отлично работает для получения отдельных компонентов, которые представляют дату и время во входной строке.
Проблема заключается в том, что часть времени должна быть необязательной, не останавливая всего регулярного выражения.
Строка ввода проблемы:
/04-11-2010//
Массив соответствий PHP
Array
(
)
По сути, мне нужно вернуть массив совпадений:
Array
(
[0] => /01-11-2010/12:45/
[1] => 01
[2] => 11
[3] => 2010
[4] =>
[5] =>
)
Обратите внимание, что элементы массива 4 и 5 все еще должны существовать, но возвращать пустой.