正则表达式从PHP中的文本中提取时间戳

时间:2010-09-13 05:37:38

标签: php regex string timestamp

我有以下文字(或其中一些类似的变体):

  

重复活动

     

首先开始:2010-09-16 17:00:00美国东部时间

     

持续时间:4800

     

活动状态:已确认

我需要选择“First Start”字段的时间戳和持续时间。

通常我会将字符串拆分为冒号,但由于时间戳包含它们,因此它会变得有问题。我对正则表达式不太满意,但有没有人知道能够选择我需要的两位数据呢?

欢呼声, 麦克

4 个答案:

答案 0 :(得分:2)

假设格式保持这种方式,您可以搜索“:”,即冒号后跟空格。此后的字符串将是您的数据。

答案 1 :(得分:1)

对于一个简单的非正则表达式解决方案,找到带strpos($input, ":")的第一个:,然后该行的其余部分将具有该值。

答案 2 :(得分:1)

$content = '

    Recurring Event

    First start: 2010-09-16 17:00:00 EDT

    Duration: 4800

    Event Status: confirmed
';

$contentArray = explode('EDT' , $content);
$head = trim($content[0]);   
//$head will contain 'Recurring Event First start:2010-09-16 17:00:00 '

$headArray = explode(' ' , $head);
$timeStamp = trim(end($headArray));   //which will have 17:00:00

答案 3 :(得分:0)

你可以这样做:

if(preg_match('/First start: ([-\d :]+)/',$input,$m)) {
        $timeStamp = trim($m[1]);
}else{
        $timeStamp = '';
}

if(preg_match('/Duration: (\d+)/',$input,$m)) {
        $duration = $m[1];
}else{
        $duration = '';
}