Здравствуйте, уважаемые.
Возник такой вопрос, получаю текст с данными, начинается обычно так: "Родился 21 февраля 1956 года ............"
Нужно вырезать дату и перевести в вид "1956-02-21"
Проблема в том, что в тексте может быть полная дата рождения, может только год рождения, может вообще ничего не быть.
Помогите составить регулярное выражение, или может другим путём реализовать задуманное.
InstantCMS 2.X
Откуда получаете? В каком виде? Каким способом?
#3
5 июня 2020 в 19:34
Получаю парсером со стороннего сайта в виде текста, который начинается как я написал выше.
Откуда получаете? В каком виде? Каким способом?
Сегодня в 20:25
Тогда практически никак. Теоретически, если предположить, что перед датой и после известные слова, то можно всё что между ними вытащить, разложить, пропустить через условия и снова собрать.Но это лишь в теории).
@boom,
Так попробуйте:
Так попробуйте:
$string = "Родилась 1 октября 1983 года. В мороз и солнце, в день чудесный"; $months = array('января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря'); foreach ($months as $key => $mo){ $month = $key >= 9 ? $key + 1 : 0 . ($key + 1); } } $bithday_date = $match[2].'-'.$month.'-'. ($match[1] < 10 ? 0 . $match[1] : $match[1]); $bithday_date = $match[2].'-01-01'; } else { $bithday_date = '1970-01-01'; } echo $bithday_date;
#6
5 июня 2020 в 21:31
Ris,
Проблема в том, что в тексте может быть полная дата рождения, может только год рождения, может вообще ничего не быть.
#7
5 июня 2020 в 21:42
Проблема?Проблема в том,
else {$bithday_date = '1970-01-01';}
#8
6 июня 2020 в 01:02
Ris, Спасибо Вам, дорогой человек.
#9
6 июня 2020 в 16:59
Ris, красивое решение