Извлечение даты из строки - PullRequest
1 голос
/ 21 августа 2010

Я хотел бы извлечь дату из любой введенной строки.Но не относится к формату даты (иначе я бы использовал какое-то регулярное выражение)

например

"Снимки, сделанные в Африке 3 недели назад"

Парсер php извлечет "3 недели назад", и я могу с радостью преобразовать это.

Кто-нибудь знает лучший метод для выполнения этого или любой библиотеки, которая может сделать это для меня.Я решил, что циклически проходить через все возможные комбинации строк во входных данных не будет хорошей идеей.

Спасибо, ребята


Пекка высказал хорошую мысль.

В случае обнаружения нескольких строк для использования с функцией strtotime () я бы выполнил магию севав моей части.Может быть, разработать какой-то алгоритм контекста.Но я не думаю, что вам, ребята, придется беспокоиться и об этом.Я очень рад, чтобы восстановить понимание того, как извлечь этот бит даты.

Еще примеры

на прошлой неделе на концерте в Альберт-холле.

снято 5 лет назад в Париже с Эмили.

Все эти снимки мы сделали на новом месте в декабре

  • Такие вещи на самом деле.

1 Ответ

1 голос
/ 21 августа 2010

Я так понимаю, вы используете strtotime. В таком случае, почему бы не выполнить синтаксический анализ строки и определить самый длинный список токенов, которые могут составлять допустимое время, например, «назад», «3», «недели», «дни» и т. Д. Затем попробуйте проанализировать список токсы с strtotime. Если это не работает, попробуйте следующий длинный список действительных токенов. Очевидно, вам понадобится список всех допустимых токенов, которые strtotime возьмет, но это не должно быть слишком сложно.

Итак, в «Снимках, сделанных в Африке 3 недели назад», ваш код найдет действительные токены «3», «недели» и «назад» и попытается проанализировать их с помощью strtotime.

Это не идеально, но я думаю, что это будет работать во многих случаях.

...