我正在编写一个脚本,它将从邮件中提取所有日期并将其转换为时间戳。 PHP的strtotime(类似于Unix的date -c 'some date'
)将是完美的,因为它识别所有类型的日期,例如:
但是,我首先找不到这些日期。例如,在以下字符串中,
明天晚上9点我将在那里吃晚餐
我需要隔离“明天晚上9点”,因为这是strtotime认可的部分。
是否有正则表达式或类似的东西可以返回所有可由strtotime解析的日期?
答案 0 :(得分:1)
我唯一能想到的是date_parse。 <{1}}接受的任何格式的正则表达式将是巨大的。
date_parse的一个例子:
strtotime
它会输出这样的东西(我从中移除了不重要的部分,使结果更轻):
$str = "I'll be there for dinner tomorrow at 9:00pm";
$parsed = date_parse($str);
print_r($parsed);
这是否适合您主要取决于您的输入是什么样的。如果输入字符串中有多个日期实例,则它将无法按预期工作。
答案 1 :(得分:0)
这可能不是完全有效,但应该适用于最多包含5个字的任何日期字符串。我会写这个函数,但我想你会得到以下评论的想法......
$words = explode(' ',$original_string);
// Use the array_chunk() function break up this array into 1-word,
// 2-word, 3-word, and 4-word long substrings of the original string
// Reform them back into strings and pass each one through strtodate()