Blog. Just Blog

Производственный календарь на PHP

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Web-мастеру и не только | Автор: ManHunter
Производственный календарь на PHP
Производственный календарь на PHP

Производственный календарь - это календарь, составленный с учетом выходных дней и праздников, с помощью которого составляют рабочие графики, определяют число рабочих часов за месяц и начисляют заработную плату. Конечно, этим его функции не ограничиваются, например, ваш сервис может отправлять какие-нибудь уведомления только по будним дням, или наоборот, выполнять массированную синхронизацию по выходным дням, когда нагрузка на него минимальная. Вся сложность тут в получении списка рабочих и выходных дней. Для своих проектов в качестве источника информации я использую сайт calend.ru.

Данные загружаются ежегодно в первых числах января по планировщику вот таким несложным скриптом на PHP:
  1. $ch=curl_init();
  2. curl_setopt($chCURLOPT_URL"http://www.calend.ru/work/");
  3. curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
  4. curl_setopt($chCURLOPT_HEADERfalse);
  5. curl_setopt($chCURLOPT_POSTfalse);
  6. curl_setopt($chCURLOPT_USERAGENT"Mozilla 4.0");
  7. $result=mb_convert_encoding(curl_exec($ch),'utf-8','windows-1251');
  8. curl_close($ch);
  9.  
  10. if (strpos($result'Производственный календарь на '.date('Y').' год')) {
  11.     preg_match_all('/<td class="(day[^"]*)" day="([0-9]+)" month="([0-9]+)">/',
  12.         $result$matches);
  13.  
  14.     if (count($matches[3])>0) {
  15.         $calend=array();
  16.         foreach($matches[3] as $i=>$month) {
  17.             if (!isset($calend[$month])) {
  18.                 $calend[$month]=array();
  19.             }
  20.             $calend[$month][$matches[2][$i]]=($matches[1][$i]=='day col5'?1:0);
  21.         }
  22.     }
  23. }
На выходе получается двумерный массив $calend['месяц']['число'] со значениями 1 - выходной день, 0 - рабочий. Ну а куда дальше сохранять эти данные и как использовать - это уже на ваше усмотрение. Кодировка скрипта - юникод. Код минимальный, никаких особых обработок ошибок не предусмотрено.

Поделиться ссылкой ВКонтакте Поделиться ссылкой на Facebook Поделиться ссылкой на LiveJournal Поделиться ссылкой в Мой Круг Добавить в Мой мир Добавить на ЛиРу (Liveinternet) Добавить в закладки Memori Добавить в закладки Google
Просмотров: 294 | Комментариев: 0

Метки: PHP

Комментарии

Отзывы посетителей сайта о статье
Комментариeв нет

Добавить комментарий

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2018
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 2 (0.0044 сек.) / Память: 4.75 Mb
Наверх