Blog. Just Blog

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

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

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

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

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

Метки: PHP
Внимание! Статья опубликована больше года назад, информация могла устареть!

Комментарии

Отзывы посетителей сайта о статье
ManHunter (13.01.2020 в 15:42):
Поменялась верстка и кодировка на calend.ru, исправил скрипт в соответствии с новыми обстоятельствами.

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

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

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