2011-04-17 107 views
3

我想检测网页中字符串的所有时间,然后在php中使用strtotime()来获取unix时间戳。有没有一种方法来检测时间就像使用PHP的字符串。我可以使用正则表达式来处理特定的页面,但是我正在寻找一些通用的东西,或者至少是能够检测大部分时间/日期字符串可能格式的东西?感谢您阅读本文。如何检测字符串中字符串的时间

这是很好的,但有限的 Matching a time string with a regular expression

+1

这是否包含“昨天”,“今天”和“明年”等时间或仅仅是数字表示?我也有兴趣听到你为什么这样做,如果你对他们开放,可能会有更好的解决方案(除非这个问题只是一个练习?)。 – 2011-04-17 14:35:25

+0

感谢您的回复。我正在索引一组网站,其中一些是论坛。我在想,如果我能得到所有的时间字符串,把它们放在一个数组中,对最大值进行排序,它会给我一个可靠的指示,说明页面是否已更新以及何时更新。不,它不会包括今天,明天或昨天,比这更结构化的东西。 – sam 2011-04-17 14:42:14

+0

对于每天使用整个页面的html字符串制作sha1并不会比较便宜,并将它们与您保存的最新sha1进行比较? – AJJ 2011-04-17 14:51:26

回答

2

类似的问题在这里:

How to convert String to Date without knowing the format?

的共识是,你需要知道传入格式。您也可以尝试将传入的字符串与已知格式的谨慎列表进行匹配,以尝试确定格式。你在这个问题上提到了正则表达式。这些确实是唯一的两种方式。

+0

所以我需要开发一个我期待的可能的时间/日期格式数组,然后使用正则表达式来检测它们,然后将strtotime()转换为unix。我想时间/日期格式的数组不应该太大,可以手动开发它!希望有一个更加完善的解决方案。 – sam 2011-04-17 14:48:37

+0

这里使用的方法可能会有帮助:https://github.com/etiennetremel/PHP-Find-Date-in-String – user2761030 2014-10-02 12:07:38

1

你可以试着看看strtotime()本身的底层实现,看看它是如何实现的 - 可能会给你一些想法。

+0

http://us.php.net/manual/en/datetime.formats.php包含所有可能的格式由PHP识别,我想我可以从这里开始制作一个可能的字符串列表在html中查找。包括所有的正则表达式。感谢您指出这个方向 – sam 2011-04-17 14:59:40