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

Статус
В этой теме нельзя размещать новые ответы.

Pup_vseya

Создатель
Регистрация
20 Ноя 2008
Сообщения
27
Реакции
2
Есть текст (а может и не быть:(at:
Родилась 28 октября 1955г. в Саратове.<br />
или
Родился 17 января 1945г. в Москве.<br />
или
9 июля 1924 - 26.06.1999
или
09.06.1924 - 26 июня 1999
вообщем это не полный перечень вариаций, но основной...

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

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


UPDATE: Еще бы хорошо эту дрянь (исходные тексты с датами) повырывать из текста...
 
Регулярными выражениями - 100%
 
Юзать мануал, прочитать 10страницы в книге о php :) Очевидно же
 
/((\d+)\s([а-яА-Я]+)\s(\d+))|((\d+)\.(\d+)\.(\d+))/u
Первая часть до "|" обрабатывает даты типа "9 июля 1924"
Вторая типа "09.06.1924"
UPD
тут можно потренироваться
 
вообще - сначала обработать весь текст регулярками по заданным шаблонам - вариантам даты, встречающихся в тексте, для приведения их к какому либо общему виду, при этом использовать ВЕСЬ перечень вариаций, иначе ошибки будут
можно, например, сначал заменить имя месяца на цифры с точками, затем убрать пробелы и тд

или ты готовый код просишь?
 
  • Нравится
Реакции: irk
или ты готовый код просишь?
Нет, готовый это, конечно, замечательно, но самому тоже надо научиться... А вот примеры и описание принципов обработки - не помешавют ;)
 
Как простой вариант можно сделать так

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);
 
Как простой вариант можно сделать так

PHP:
$my_date = '26.06.1999';
$date  = explode(".",$my_date);
echo mktime(0,0,0,$date[1],$date[2],$date[0]);
//Выводит 1952859600

есть такая функция strtotime, которая преобразовывает дату в формат UNIX_TIMESTAMP. Так что не надо мудиться и резать строку на части.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху