|
|
|
| Нужно выбрать из такой даты: 10 Мая 2010 число, день, год.
Т.е. выбрать число до слова (там может быть и 1 и 10), слово (может быть и Сентябрь, т.е. длинее) и число после слова.
А ещё лучше преобразовать её в timestamp, чтобы сравнить с текущей датой.
Не подскажете, как правильно составить рег. выражение?
Или есть другой способ? | |
|
|
|
|
|
|
|
для: netas
(13.06.2010 в 19:04)
| | рег выр.
([0-9])+\s*(Января|Февраля|...|Декабря)\s*([0-9]+)
|
| |
|
|
|
|
|
|
|
для: Trianon
(13.06.2010 в 19:52)
| |
<?
function rep_date($month)
{
$m_rus = array("Январ","Феврал","Март","Апрел","Ма","Июн","Июл","Август","Сентябр","Октябр","Ноябр","Декабр");
$key = array_search(substr($month, 0, -1),$m_rus) + 1;
return $key;
}
$date = "10 Мая 2010";
$time = explode(" ",$date);
$time[1] = rep_date($time[1]);
echo "Время timestamp: {$time[1]}-{$time[0]}-{$time[2]}<br>";
echo "Время(Unix): ".strtotime("{$time[0]}.{$time[1]}.{$time[2]}"), "\n";
?>
|
| |
|
|
|
|
|
|
|
для: Usta
(13.06.2010 в 19:58)
| | Чего-то он выдаёт 1-10-2010, хотя должен 1-5-2010
Хотя спасибо и на этом, разберёмся. | |
|
|
|
|
|
|
|
для: Usta
(13.06.2010 в 19:58)
| | Не, что-то не получается. Даже с подставленной сегодняшней датой 13 Июня 2010 и они всё-равно различаются. | |
|
|
|
|
|
|
|
для: Trianon
(13.06.2010 в 19:52)
| | Спасибо | |
|
|
|
|
|
|
|
для: netas
(13.06.2010 в 21:53)
| | У меня одинаковое время получилось
<?
$date = "13 Июня 2010";
$time = explode(" ",$date);
$time[1] = rep_date($time[1]);
echo "Время timestamp: {$time[1]}-{$time[0]}-{$time[2]}<br>"; // 6-13-2010
echo "Время(Unix): ".strtotime("{$time[0]}.{$time[1]}.{$time[2]}")."<br/>\n"; // 1276372800
echo "Время(Unix): ".strtotime("today")."<br/>\n"; // 1276372800
?>
|
| |
|
|
|
|
|
|
|
для: Usta
(13.06.2010 в 22:57)
| | А так не сходятся:
<?
function rep_date($month)
{
$m_rus = array("Январ","Феврал","Март","Апрел","Ма","Июн","Июл","Август","Сентябр","Октябр","Ноябр","Декабр");
$key = array_search(substr($month, 0, -1),$m_rus) + 1;
return $key;
}
$date = "13 Июня 2010";
$time = explode(" ",$date);
$time[1] = rep_date($time[1]);
echo "Время timestamp: {$time[1]}-{$time[0]}-{$time[2]}<br>"; // 1-13-2010
echo "Время(Unix): ".strtotime("{$time[0]}.{$time[1]}.{$time[2]}")."<br/>\n"; // 1263333600
echo "Время(Unix): ".strtotime("today")."<br/>\n"; // 1276372800
?>
|
Там где-то ошибка, не могу понять, где. | |
|
|
|
|
|
|
|
для: netas
(13.06.2010 в 23:09)
| | тут еще касяк в том что если месяц с маленькой буквы то функция вернет 1, вот в чем загвостка.
Модификация, должно заработать.
<?
function rep_date($month)
{
$month = strtolower($month);
$m_rus = array("январ","феврал","март","апрел","ма","июн","июл","август","сентябр","октябр","ноябр","декабр");
$key = array_search(substr($month, 0, -1),$m_rus) + 1;
return $key;
}
$date = "13 Июня 2010";
$time = explode(" ",$date);
$time[1] = rep_date($time[1]);
echo "Время timestamp: {$time[1]}-{$time[0]}-{$time[2]}<br>";
echo "Время(Unix): ".strtotime("{$time[0]}.{$time[1]}.{$time[2]}")."<br/>\n"; // 1276372800
echo "Время(Unix): ".strtotime("today")."<br/>\n"; // 1276372800
?>
|
| |
|
|
|
|
|
|
|
для: Usta
(13.06.2010 в 23:38)
| | Не, всё-равно выдаёт дату 1-13-2010 | |
|
|
|
|
|
|
|
для: netas
(13.06.2010 в 23:55)
| | Проверьте на каком этапе он не работает.
Поставьте
<?
function rep_date($month)
{
$month = strtolower($month);
$m_rus = array("январ","феврал","март","апрел","ма","июн","июл","август","сентябр","октябр","ноябр","декабр");
$month = substr($month, 0, -1); echo "Обрезали: ".$month."<br/>"; // Обрезали: июн
$key = array_search($month,$m_rus) + 1; echo "Ключ: ".$key."<br/>"; // Ключ: 6
return $key;
}
?>
|
и попробуй вместо array_search() поставить array_keys() | |
|
|
|
|
|
|
|
для: Usta
(13.06.2010 в 23:59)
| | При array_keys выдал ошибку "Warning: array_keys() [function.array-keys]: The first argument should be an array in..."
У меня выдаёт Ключ:1 | |
|
|
|
|
|
|
|
для: netas
(14.06.2010 в 09:31)
| | простите, а Вы вслепую советы исполняете, или всё же пытаетесь вникнуть в то, что Вам предлагают? | |
|
|
|
|
|
|
|
для: netas
(14.06.2010 в 09:31)
| | >При array_keys выдал ошибку "Warning: array_keys() [function.array-keys]: The first argument should be an array in..."
ну правильно там для array_keys() 1 аргумент - массив, 2 аргумент - строка. Поменяйте местами.
По экспериментировать:
<? $key = array_keys($m_rus,$month); ?>
|
<? $key = array_search($month,$m_rus,true); // Поставить true?>
|
Если не получится, то я со всем не понимаю что у вас не сходится. :-( | |
|
|
|
|
|
|
|
для: Usta
(14.06.2010 в 14:52)
| | Не получается.
Попробовал вот так:
$test= "1 Декабря 2010";
$date=explode(" ",$test);
echo $date['2']."-"; if($date['1']=="Января")echo "01";if($date['1']=="Февраля")echo "02";if($date['1']=="Марта")echo "03";if($date['1']=="Апреля")echo "04";if($date['1']=="Мая")echo "05";if($date['1']=="Июня")echo "06";if($date['1']=="Июля")echo "07";if($date['1']=="Августа")echo "08";if($date['1']=="Сентября")echo "09";if($date['1']=="Октября")echo "10";if($date['1']=="Ноября")echo "11";if($date['1']=="Декабря")echo "12"; echo"-"; echo $date['0'];
|
В принципе, получается как надо.
Подскажите, как можно запихнуть это всё в переменную? | |
|
|
|
|
|
|
|
для: netas
(14.06.2010 в 21:53)
| | а всё в одну строку растянуть - это чтоб всем сразу прикурить чем было? | |
|
|
|
|
|
|
|
для: netas
(14.06.2010 в 21:53)
| | Тогда уж так:
<?
function rep_date($month)
{
$month = strtolower($month);
$m_rus = array("январ","февраля","март","апрел","ма","июн","июл","август","сентябр","октябр","ноябр","декабр");
$month = substr($month, 0, -1);
foreach($m_rus as $key => $val)
{
if($val == $month) return ($key+1);
}
}
$date = "15 Июнь 2010";
$time = explode(" ",$date);
$time[1] = rep_date($time[1]); echo $time[1];
echo "Время timestamp: {$time[1]}-{$time[0]}-{$time[2]}<br>";
echo "Время(Unix): ".strtotime("{$time[0]}.{$time[1]}.{$time[2]}")."<br/>\n"; // 1276545600
echo "Время(Unix): ".strtotime("today")."<br/>\n"; // 1276545600
?>
|
| |
|
|
|