2

我正在尝试从 php 中的句子中获取日期。例如

我试图让 2006 年 10 月 8 日离开

“这座建筑在一场大风暴之后于 2006 年 10 月 8 日进行了清理。”

它有一个 github 函数 https://github.com/etiennetremel/PHP-Find-Date-in-String但它在 2012 年 1 月 5 日等日期失败。

我意识到,鉴于日期字符串的不同性质,在字符串中查找日期字符串比仅针对特定格式的简单 REGEX 或简单地对给定字符串输入进行 strototiming 困难得多。

有人有什么好主意吗?

4

3 回答 3

1

我不认为有一个可行的解决方案,因为 2010 年 10 月 8 日并没有说明太多......它可能是 10 天或一个月......我认为你可以继续使用你的正则表达式 :)

于 2013-03-13T17:53:38.440 回答
1

首先,我会先寻找一些基本模式,然后用几遍正则表达式提取它们(mm/dd/yy 和 mm/dd/yyyy with \d{2]/\d{2}/\d{2,4},然后寻找其他模式,例如\d{1,2}(th|st|rd)? Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May|Jun(e)?|Jul(y)?|Aug(ust)?|Sep(tember)?|Oct(ober)|Nov(ember)?|Dec(ember)等)

几乎可以肯定的是,编写几个正则表达式并逐次完成比编写一个庞大的正则表达式要快。

然后,传递您提取的内容strtotime以获得可用的 unix 时间戳,并从中获取所需的内容。

注意事项:

  • 我没有尝试过正则表达式,有明显的优化
  • 假设您的日期将始终为美国风格(mm/dd/yy,而不是 dd/mm/yy)
于 2013-03-13T17:59:18.840 回答
0

我认为使用正则表达式会更简单。问题是日期的书写方式有很多选择。

于 2013-03-13T17:58:07.810 回答