Надо преобразовать текст в дату

Тема в разделе "PHP", создана пользователем Pup_vseya, 14 авг 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Pup_vseya

    Pup_vseya Создатель

    Регистр.:
    20 ноя 2008
    Сообщения:
    27
    Симпатии:
    2
    Есть текст (а может и не быть:(at:
    или
    или
    или
    вообщем это не полный перечень вариаций, но основной...

    как такое перенести в нормальный формат в БД (естественно date, а не varchar)?:be:

    p.s. показанный текст примера, может быть в любом месте.. :(
    p.s.s Ручками не придлагать, 400.000 записей не осилю :(


    UPDATE: Еще бы хорошо эту дрянь (исходные тексты с датами) повырывать из текста...
     
  2. gmaster

    gmaster Постоялец

    Регистр.:
    30 июл 2006
    Сообщения:
    63
    Симпатии:
    7
    Регулярными выражениями - 100%
     
  3. Pup_vseya

    Pup_vseya Создатель

    Регистр.:
    20 ноя 2008
    Сообщения:
    27
    Симпатии:
    2
    До этого я и так догадывался... но как быть тем, кто с ними никогда не сталкивался?
     
  4. omfg

    omfg

    Регистр.:
    4 авг 2009
    Сообщения:
    159
    Симпатии:
    46
    Юзать мануал, прочитать 10страницы в книге о php :) Очевидно же
     
  5. antidote

    antidote

    Регистр.:
    21 янв 2008
    Сообщения:
    167
    Симпатии:
    42
    /((\d+)\s([а-яА-Я]+)\s(\d+))|((\d+)\.(\d+)\.(\d+))/u
    Первая часть до "|" обрабатывает даты типа "9 июля 1924"
    Вторая типа "09.06.1924"
    UPD
    тут можно потренироваться http://pyha.ru/fishki/regexp/
     
  6. betatest

    betatest

    Регистр.:
    3 дек 2007
    Сообщения:
    517
    Симпатии:
    127
    вообще - сначала обработать весь текст регулярками по заданным шаблонам - вариантам даты, встречающихся в тексте, для приведения их к какому либо общему виду, при этом использовать ВЕСЬ перечень вариаций, иначе ошибки будут
    можно, например, сначал заменить имя месяца на цифры с точками, затем убрать пробелы и тд

    или ты готовый код просишь?
     
    irk нравится это.
  7. Pup_vseya

    Pup_vseya Создатель

    Регистр.:
    20 ноя 2008
    Сообщения:
    27
    Симпатии:
    2
    Нет, готовый это, конечно, замечательно, но самому тоже надо научиться... А вот примеры и описание принципов обработки - не помешавют ;)
     
  8. alexz15

    alexz15

    Регистр.:
    3 окт 2008
    Сообщения:
    394
    Симпатии:
    190
    Вот - преобразовывает разные даты, может подойдет:
    http://www.phpclasses.org/browse/package/1003.html
     
  9. EaRLL

    EaRLL Писатель

    Регистр.:
    4 авг 2009
    Сообщения:
    8
    Симпатии:
    2
    Как простой вариант можно сделать так

    PHP:
    $my_date '26 06 1999';
    $date  explode(" ",$my_date);

    $time mktime(0,0,0,$date[1],$date[0],$date[2]);

    echo 
    $time;
    //Выводит 1952859600
    //Далее возвращать в исходный вид можно так
    echo date("d n Y"$time);
     
    CheburatoR-all нравится это.
  10. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    есть такая функция strtotime, которая преобразовывает дату в формат UNIX_TIMESTAMP. Так что не надо мудиться и резать строку на части.
     
    EaRLL нравится это.
Статус темы:
Закрыта.