Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> помогите с регулярко 
V
    Опции темы
studentigor
Дата 12.5.2012, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 397
Регистрация: 14.11.2008

Репутация: нет
Всего: нет



Всем привет
Не дружу с регулярками, поэтому помогите кому не сложно.

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

Спасибо
PM MAIL   Вверх
Aliance
Дата 12.5.2012, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 2
Всего: 137



strtotime, не?
PM MAIL WWW ICQ Skype   Вверх
studentigor
Дата 13.5.2012, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 397
Регистрация: 14.11.2008

Репутация: нет
Всего: нет



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

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


и мне нужна регулярка которая вытянула бы 13.05.2012 и 20.05.2012 даты, и больше ничего.
PM MAIL   Вверх
Gold Dragon
Дата 14.5.2012, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 1
Всего: 71



где-то так...
Код

// строка
$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 . " - похожа на дату, но не дата";
    }
}

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

Это сообщение отредактировал(а) Gold Dragon - 14.5.2012, 08:48


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
studentigor
Дата 14.5.2012, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 397
Регистрация: 14.11.2008

Репутация: нет
Всего: нет



оо, спасибо большое smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0448 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.