LINUX.ORG.RU

регулярное выражение

 ,


0

1

Слабо разбираюсь в регулярках
нужно на php отпарсить
пример : 1 неделя 2 часа 30 минут или 1н 2 ч 30м
можно брать по первой букве слова



Последнее исправление: CYB3R (всего исправлений: 1)

$arr=array(); $week_match="(?P<week>\d+)\s*н(?:еделя)?"; $hour_match="(?P<hour>\d+)\s*ч(?:аса)?"; $minutes_match="(?P<min>\d+)\s*м(?:инут)?";

$match=implode('\s+',array( $week_match,$hour_match,$minutes_match)); $week=0; $hour=0; $min=0; if(preg_match(«/$match/»,$a,$arr);){ $week=(int)$arr['week']; $hour=(int)$arr['hour']; $min=(int)$arr['min']; }

Jaberwock ★★★
()
Ответ на: комментарий от Jaberwock

может от всех слов взять только первую букву и тогда с окончаниями проблем не станет?

samedovr
() автор топика

сделал так

	
$en = array(
'week',
'week',
'week',
'week',
'day',
'day',
'day',
'hour',
'hour',
'hour',
'minute', 
'minute', 
'minute',  
'minute',  
'week',
'day',
'hour',
'minute'
);
 
$ru = array(
'неделя',
'недель',
'недели',
'нед',
'день',
'дня',
'дни',
'часа',
'час',
'часов',
'минута',
'минут',
'минуты',
'мин',
'н',
'д',
'ч',
'м' 
);
 $date = '1 неделя 1 день , 2 ч, 30 минут';
 
echo $date = str_replace($ru,$en,$date), "\n";
$time = strtotime($date)-time();
  echo $time, "\n";

samedovr
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.