Я новичок в php и изучаю регулярные выражения. Я пытаюсь использовать preg_match для преобразования стандартного времени в военное время. Данные поступают в формате «6 сентября 1991 года в 6:23 вечера». В другом месте кода я уже использовал регулярные выражения для разбиения данных на массив с элементами «Месяц», «День», «Год», «Час» и «Минуты». Я пытаюсь сказать программе посмотреть данные, и если она закончится в PM, добавьте 12 к элементу «Час». Вот мой код:PHP: регулярное выражение с preg_match
if (preg_match("/[A-Za-z0-9,:\s]*[PM]/", $original_data)) {
$broken_data[$j][3]= $broken_data[$j][3] + 12;
}
Где $ original_data является строка в формате «6 сентября 1991 в 6:23 вечера» и $ broken_data это массив описано выше. То, что я думаю, что preg_match делает (и намеревается это сделать), возвращает true, если есть какое-то количество A-Z, a-z, 0-9,:, запятых или пробелов, за которыми следует PM. Как это неправильно?
Спасибо заранее!
'[PM]' Соответствует одному символу 'P' или' M' –
И - в соответствии с [PHP Docs] (http://php.net/manual/en/function.preg-match .php), вам нужно передать '$ broken_data' в качестве аргумента, чтобы получить компоненты в виде массива. –
Спасибо, Авинаш! Изменил его на [P] [M], и он отлично работает. – zath1164