2010-08-21 112 views
1

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

“的图片在非洲采取3个星期前”

PHP解析器将extrace“3周以前“,​​我可以愉快地将其转换。

有没有人知道最好的方法来执行这个或任何图书馆,可以为我做。我确定循环遍历输入中所有可能的字符串组合并不是一个好主意。

谢谢你们


佩卡取得了良好的点。

如果检测到多个字符串与strtotime()函数一起使用,那么我会对我的部分执行seom魔术。也许设计某种conetext算法。但我不指望你的队友也必须担心这一点。我非常高兴能够了解如何提取这个日期位。

更多示例上周

在阿尔伯特音乐厅演唱会。

拍摄5年前在与艾米莉的巴黎。

所有这些图片我们

  • 东西一样,在新的地方了真。
+0

我认为这需要更多的例子。 '我3周前在非洲拍摄的照片会发生什么事情? “3周前我和我5年前出生的儿子在非洲拍摄的照片”? – 2010-08-21 11:42:42

+0

[解析日期在PHP中的字符串]可能的重复(http://stackoverflow.com/questions/3053580/parsing-a-string-for-dates-in-php) – Gordon 2010-08-21 12:18:24

回答

1

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

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

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

+0

这是一个非常好的主意 - 可以工作。解析有效令牌的列表,然后找到彼此联合的一个集合。就像字符串中两个彼此相邻的有效令牌一样。伟大的建议。 – Glycerine 2010-08-21 12:10:12