Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > помогите с регулярко


Автор: studentigor 12.5.2012, 13:17
Всем привет
Не дружу с регулярками, поэтому помогите кому не сложно.

Нужна регулярка которая бы вытягивала с текста дату
ну к примеру такую 12.05.2012, разделитель может быть разный.

Спасибо

Автор: Aliance 12.5.2012, 15:29
http://ru.php.net/strtotime, не?

Автор: studentigor 13.5.2012, 14:14
так мне же не формат даты преобразовать,
 
мне нужно вытянуть из какого-то текста дату.
ну к примеру есть некая строка
Код

$str = 'вот есть некая строка в которой есть дата, к примеру такая - 13.05.2012, и есть ещё одна дата, но уже 20.05.2012';


и мне нужна регулярка которая вытянула бы 13.05.2012 и 20.05.2012 даты, и больше ничего.

Автор: Gold Dragon 14.5.2012, 08:47
где-то так...
Код

// строка
$a = "12-12-2012фывлдо л 01.12.2012 орыволр лорыфв фывлдо л02.212.2012 орыволр лорыфвфывлдо л32.12.2012 орыволр лорыфв 04:05:2012";
// разделители
$aa = "-.:";
// регулярка
$ex = "#(^|\D)(\d{2}[" . $aa . "]\d{2}[" . $aa . "]\d{4})($|\D)#i";
// проверяем строку
$b = preg_match_all($ex, $a, $c);
// количество совпадений
echo "Найдено совпадений: " . $b;
// Листаем результат
foreach($c[2] as $date){
    // дата
    $dd = intval($date[0] . $date[1]);
    // месяц
    $mm = intval($date[3] . $date[4]);
    // год
    $yy = intval($date[6] . $date[7] . $date[8] . $date[9]);
    // проверяем на валидность даты
    if(checkdate($mm, $dd, $yy)){ // если дата валидна
        echo "<br>" . $date . " - дата";
    } else{ // если дата не валидна
        echo "<br>" . $date . " - похожа на дату, но не дата";
    }
}

Регулярка имеет следующее правило:
- дата начинается или с начала сроки или с "не цифры"
- далее должно быть две  цифры
- далее разделитель
- далее две цифры
- далее разделитель
- далее четыре цифры
- заканчивается "не цифрой" или концом строки

Автор: studentigor 14.5.2012, 09:52
оо, спасибо большое smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)