php一年节日,自动获取节日日期并显示灯笼效果的PHP源码

原创内容,转载请注明出处:https://www.myzhenai.com.cn/post/3724.html

关键字:网站灯笼 春节灯笼 网站节日灯笼

因为之前我在网上找到了一个网站灯笼效果的CSS源码,这源码是使用CSS重画两个灯笼的样式出来,然后再灯笼上显示节日,但是使用起来有些麻烦,因为要不停的修改网站后台或源文件,我就在想,可不可以通过PHP来获取节日日期,并且自动显示,通过几天的折腾,也完整折腾出来源码了,在这里要感谢深圳的邱斌兄弟,是他给了我一些指导和耐心的帮忙调试错误。写出来源码很简单,但是因为编写源码的环境改变了,所以出现了一些低级的错误。

1、PHP中括号()出错,因为在写 jieri_date()函数的时候,调用了一个get_yunxiao()的函数,但是我却错误的把后边的括号写成全角字符了

2、shell中在curl的时候,地址中的&符号需要用\进行转义,我就是因为没有对符号进行转义,调试了一整天

3、PHP读取shell脚本生成日期模块的调试出错

还好,现在这些问题都解决了,因为我以前是在Centos桌面里写源码,所以没有出现过这样的低级错误,但是现在换成Windows7下用phpstorm来写,但是在输入法切换上却出现了这样的低级错误,白白浪费了几天的时间来调试错误。

言归正传,现在来演示达到效果需要的几步工作。

1、注册聚合数据平台,使用 http://v.juhe.cn/calendar/year?year=2018&key=您申请的appKey 来获取当年节日时间,我们这里需要获取非固定的节日时间,例如:春节、元宵、端午、中秋等农历节日,像国庆、元旦、圣诞、情人等固定新历时间的不需要。

2、准备好phpstorm和UltraEdit编辑器

3、先把shell脚本保存为.sh后缀的文件上传到服务器/home/目录

4、下载你网站目录中的functions.php和header.php两个源文件到本地,使用phpstorm或UltraEdit打开,然后把以下的源码复制到functions.php中的相关位置,然后在header.php相关位置中添加 这一句来进行调用即可。

5、将functions.php和header.php两个源文件上传到网站目录中覆盖原文件即可。

6、演示:https://jiayu.mybabya.com/jieri.php

85ebe9588e75ecb65c71d5591219d05f.png

f6f9e43bca39ad25dd6128663a6cd0e4.png

SHELL源码

#!/usr/bin/env bash

# !/bin/bash

############################################################################################################################################

#

# This is a lottery number automatic generation tool

# Autor: RucLinux

# Web: https://www.myzhenai.com.cn/ https://www.myzhenai.com/ https://mangshe.python.hn.cn/ https://jiayu.mybabya.com/

#

#

#############################################################################################################################################

var=$(date +%Y)

fen=$(curl -s http://v.juhe.cn/calendar/year?year=$var\&key=youappKey | awk -F "[" '{print $2}' | awk -F "]" '{print $1}' | sed 's/\\//g' | sed 's/\"//g' | sed 's/}\,/}/g' | sed 's/\,/\": /g' | sed 's/startday:/\"/g' | sed 's/}/\",\\n/g' | sed "s/name:/\"/g" | sed "s/{/ /g" | sed '/^[[:space:]]*$/d')

echo -e "{" > /var/www/jieri.log

echo -e "${fen}" >> /var/www/log

echo -e "}" >> /var/www/jieri.log

注:这里有几点需要说明

1、youappKey这个一定要替换成你在聚合数据上申请的免费固定key,为什么要使用shell来获取这个接口数据呢,因为免费版本的1个月只有1000次免费使用,如果在php里调用这个接口的话,那么将很快就超出次数了。

2、echo -e “${fen}” 这里必须要使用双引号引住

3、将上边的源码保存为.sh文件,然后在crond里设置成每月运行即可

/*# This is a festival code automatic generation tool

# Autor: RucLinux # Web: https://www.myzhenai.com.cn/ https://www.myzhenai.com/ https://mangshe.python.hn.cn/ https://jiayu.mybabya.com/

*/

/** 输出包含日期的css代码 $rixiid 变量是春节、端午、元宵、中秋等中文*/

function CSS_code($rixiid)

{

$cssid = <<

$rixiid
快乐

.deng-box {

position: fixed;

top: -30px;

left: 220px;

z-index: 9999;

pointer-events: none;

}

.deng-box1 {

position: fixed;

top: -30px;

right: 222px;

z-index: 9999;

pointer-events: none;

}

.deng-box1 .deng {

position: relative;

width: 120px;

height: 90px;

margin: 50px;

background: #d8000f;

background: rgba(216, 0, 15, 0.8);

border-radius: 50% 50%;

-webkit-transform-origin: 50% -100px;

-webkit-animation: swing 5s infinite ease-in-out;

box-shadow: -5px 5px 30px 4px rgba(252, 144, 61, 1);

}

.deng {

position: relative;

width: 120px;

height: 90px;

margin: 50px;

background: #d8000f;

background: rgba(216, 0, 15, 0.8);

border-radius: 50% 50%;

-webkit-transform-origin: 50% -100px;

-webkit-animation: swing 3s infinite ease-in-out;

box-shadow: -5px 5px 50px 4px rgba(250, 108, 0, 1);

}

.deng-a {

width: 100px;

height: 90px;

background: #d8000f;

background: rgba(216, 0, 15, 0.1);

margin: 12px 8px 8px 10px;

border-radius: 50% 50%;

border: 2px solid #dc8f03;

}

.deng-b {

width: 45px;

height: 90px;

background: #d8000f;

background: rgba(216, 0, 15, 0.1);

margin: -2px 8px 8px 26px;

border-radius: 50% 50%;

border: 2px solid #dc8f03;

}

.xian {

position: absolute;

top: -20px;

left: 60px;

width: 2px;

height: 20px;

background: #dc8f03;

}

.shui-a {

position: relative;

width: 5px;

height: 20px;

margin: -5px 0 0 59px;

-webkit-animation: swing 4s infinite ease-in-out;

-webkit-transform-origin: 50% -45px;

background: #ffa500;

border-radius: 0 0 5px 5px;

}

.shui-b {

position: absolute;

top: 14px;

left: -2px;

width: 10px;

height: 10px;

background: #dc8f03;

border-radius: 50%;

}

.shui-c {

position: absolute;

top: 18px;

left: -2px;

width: 10px;

height: 35px;

background: #ffa500;

border-radius: 0 0 0 5px;

}

.deng:before {

position: absolute;

top: -7px;

left: 29px;

height: 12px;

width: 60px;

content: " ";

display: block;

z-index: 999;

border-radius: 5px 5px 0 0;

border: solid 1px #dc8f03;

background: #ffa500;

background: linear-gradient(to right, #dc8f03, #ffa500, #dc8f03, #ffa500, #dc8f03);

}

.deng:after {

position: absolute;

bottom: -7px;

left: 10px;

height: 12px;

width: 60px;

content: " ";

display: block;

margin-left: 20px;

border-radius: 0 0 5px 5px;

border: solid 1px #dc8f03;

background: #ffa500;

background: linear-gradient(to right, #dc8f03, #ffa500, #dc8f03, #ffa500, #dc8f03);

}

.deng-t {

font-family: 华文行楷,Arial,Lucida Grande,Tahoma,sans-serif;

font-size: 1.5rem;

color: #ffa500;

font-weight: bold;

line-height: 42px;

text-align: center;

width: 25px;

margin: 0 auto;

}

.night .deng-t,

.night .deng-box,

.night .deng-box1 {

background: transparent !important;

}

@-moz-keyframes swing {

0% {

-moz-transform: rotate(-10deg)

}

50% {

-moz-transform: rotate(10deg)

}

100% {

-moz-transform: rotate(-10deg)

}

}

@-webkit-keyframes swing {

0% {

-webkit-transform: rotate(-10deg)

}

50% {

-webkit-transform: rotate(10deg)

}

100% {

-webkit-transform: rotate(-10deg)

}

}

Kof;

return $cssid;

}

/** 这是将所有字符串编码转换成UTF-8 */

function strToUtf8($str){

$encode = mb_detect_encoding($str, array("ASCII",'UTF-8',"GB2312","GBK",'BIG5'));

if($encode == 'UTF-8'){

return $str;

}else{

return mb_convert_encoding($str, 'UTF-8', $encode);

}

}

/** 判断春节、中秋、端午等节日时间*/

function panduan($jie)

{

$file = "jieri.log";

if (file_exists($file)){

$fp = file_get_contents($file);

$hang = strToUtf8($fp);

if (strpos($hang,$jie) !== false){

$left = "\": \"";

$rght = "\",";

$th = strpos($hang,$jie,0);

$t = strpos($hang,$left,$th);

$tx = strpos($hang,$rght,$t);

$bt = str_replace("\": \"","",substr($hang,$t,$tx-$t));

}

}

return $bt;

}

/**

* +----------------------------------------------------------

* 功能:计算两个日期相差 年 月 日

* +----------------------------------------------------------

* @param date $date1 起始日期

* @param date $date2 截止日期日期

* +----------------------------------------------------------

* @return array

* +----------------------------------------------------------

*/

function DiffDate($date1, $date2)

{

if (strtotime($date1) > strtotime($date2)) {

$ymd = $date2;

$date2 = $date1;

$date1 = $ymd;

}

list($y1, $m1, $d1) = explode('-', $date1);

list($y2, $m2, $d2) = explode('-', $date2);

$y = $m = $d = $_m = 0;

$math = ($y2 - $y1) * 12 + $m2 - $m1;

$y = round($math / 12);

$m = intval($math % 12);

$d = (mktime(0, 0, 0, $m2, $d2, $y2) - mktime(0, 0, 0, $m2, $d1, $y2)) / 86400;

if ($d < 0) {

$m -= 1;

$d += date('j', mktime(0, 0, 0, $m2, 0, $y2));

}

$m < 0 && $y -= 1;

return array($y, $m, $d);

}

/** 判断两个时间相差多少天 */

function time_difference($time1, $time2)

{

/** time1是小的时间。time2是大的时间,用time1-time2 */

$today = date_create($time1);

$zhongqiu = date_create($time2);

$diff = date_diff($today, $zhongqiu);

$dayto = $diff->format("%a");

return $dayto;

}

/** 计算元宵节日期,需要提供除夕时,在这个时间上加15天就是元宵节 */

function get_yunxiao()

{

$date = date_create(panduan("除夕"));

$yun = date_add($date, date_interval_create_from_date_string("15 days"));

$yunxiao = date_format($yun, "Y-n-d");

return $yunxiao;

}

/** 输出节日祝福信息 */

function jie_date()

{

$dd = date("Y-n-d");

$dc = date("Y-n-d", strtotime("+1 day"));

if (time_difference(date("Y") . "-1-1", $dc) <= 2 || time_difference(date("Y") . "-1-1", date("Y-n-d")) <= 4) {

echo CSS_code("新年");

}

if (time_difference(date("Y") . "-10-1", $dc) <= 2 || time_difference(date("Y") . "-10-1", date("Y-n-d")) <= 8) {

echo CSS_code("国庆");

}

if (time_difference(date("Y") . "-2-14", $dc) <= 2 || time_difference(date("Y") . "-2-14", date("Y-n-d")) <= 2) {

echo CSS_code("情人");

}

if (time_difference(date("Y") . "-3-1", $dc) <= 2 || time_difference(date("Y") . "-3-1", date("Y-n-d")) <= 2) {

echo CSS_code("开心");

}

if (time_difference(date("Y") . "-12-24", $dc) <= 2 || time_difference(date("Y") . "-12-24", date("Y-n-d")) <= 2) {

echo CSS_code("圣诞");

}

if (time_difference($dd, panduan("春节")) <= 7 || time_difference(panduan("春节"), $dd) <= 7) {

echo Css_code("春节");

}

if (time_difference($dd, panduan("中秋")) <= 3 || time_difference(panduan("中秋"), $dd) <= 3) {

echo Css_code("中秋");

}

if (time_difference($dd, panduan("端午")) <= 3 || time_difference(panduan("端午"), $dd) <= 3) {

echo Css_code("端午");

}

if (time_difference($dd, get_yunxiao()) <= 2 || time_difference(get_yunxiao(), $dd) <= 2) {

echo Css_code("元宵");

}

}

5bc2a77d376211b26665124854a08ab4.png

8ca82c532db2e21673aa19e527591335.png

sicnature ---------------------------------------------------------------------

Your current IP address is: 114.99.12.152

Your IP address location: 安徽省安庆市电信

Your IP address country and region: 中国

3211c715c0bf352c3fa72980bf0cc419.png

Your current browser is:

b2cb575f9cbd2e36961b3bf406c3355c.png

Your current system is:

mac.png

Original content, please indicate the source:

同福客栈论坛 | 蟒蛇科普 | 海南乡情论坛 | JiaYu Blog

sicnature ---------------------------------------------------------------------

Welcome to reprint. Please indicate the source https://www.myzhenai.com/post/3724.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值