Regex для извлечения метки времени из текста в PHP - PullRequest
1 голос
/ 13 сентября 2010

У меня есть следующий бит текста (или некоторый аналогичный вариант):

Повторяющееся событие

Первый запуск: 2010-09-16 17:00:00 ПО ВОСТОЧНОМУ ВРЕМЕНИ

Продолжительность: 4800

Состояние события: подтверждено

Мне нужно выбрать метку времени в поле «Первый запуск» и продолжительность.

Обычно я разделяю строку на двоеточия, но поскольку временная метка содержит их, это становится проблематичным.Я не очень хорош с регулярными выражениями, но кто-нибудь знает, кто сможет выбрать два бита данных, которые мне нужны?

ура, Майк

Ответы [ 4 ]

2 голосов
/ 13 сентября 2010

Предполагая, что формат остается таким, вы можете искать «:», то есть двоеточие, за которым следует пробел.Строка, следующая за этим, будет вашими данными.

1 голос
/ 13 сентября 2010
$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
1 голос
/ 13 сентября 2010

Для простого решения без регулярных выражений найдите первое значение : с помощью strpos($input, ":"), затем остаток строки будет иметь значение.

0 голосов
/ 13 сентября 2010

Вы можете сделать:

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 = '';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...