1

我想从输入的任何字符串中提取日期。但不特定于日期格式(否则我会使用某种正则表达式)

例如

“三周前在非洲拍摄的照片”

php 解析器会提取“3 周前”,我可以愉快地转换它。

有谁知道执行此操作的最佳方法或任何可以为我执行此操作的库。我确定循环遍历输入中所有可能的字符串组合并不是一个好主意。

多谢你们


佩卡提出了一个很好的观点。

如果检测到与 strtotime() 函数一起使用的多个字符串,我将执行 seom 魔术。也许设计某种conetext算法。但我不希望你们也不必担心这一点。我非常高兴重新了解如何提取此日期位。

更多示例

上周在阿尔伯特音乐厅音乐会上。

5年前与艾米丽在巴黎合影。

我们在12 月的新地方拍摄的所有这些照片

  • 真是那样的东西。
4

1 回答 1

2

我认为你正在使用strtotime. 在这种情况下,为什么不解析字符串,并确定可以使有效时间的最长令牌列表,例如'ago','3','weeks','days'等。然后尝试解析列表令牌与strtotime。如果这不起作用,请尝试下一个最长的有效令牌列表。您显然需要一份所有有效令牌的列表strtotime,但这应该不会太难。

因此,在“3 周前在非洲拍摄的照片”中,您的代码将找到有效标记“3”、“weeks”和“ago”,并尝试使用 strtotime 解析它们。

它并不完美,但我认为它可以在很多情况下工作。

于 2010-08-21T11:46:12.107 回答