+ -
当前位置:首页 → 问答吧 → 利用google实现公农历转换函数

利用google实现公农历转换函数

时间:2007-08-13

来源:互联网

复制PHP内容到剪贴板
PHP代码:

<?php
/**
* google公农历转换 
* @author    hemon <[email protected]

* Usage:
*   // 公历1983-10-5转农历
*   echo lunar('1983-10-5');
*   echo lunar('1983年10月05日'); 
*   echo lunar('一九八三年十月五日');
*   // 农历1983-8-29转公历
*   echo lunar('1983-8-29', 1, 3);  
*
* @param string 日期
* @param int    日期历法
*      - 0 公历
*        1 农历  
* @param int    输出格式
*      - 0 农历日期
*        1 干支
*        2 属相
*        3 公历日期
*        4 星期   
*
* @return string
*/
function lunar($date, $cal = 0, $format = 0){
    $cals = array('%E5%85%AC%E5%8E%86','%E5%86%9C%E5%8E%86');
    $pattern = '/\<table border=0 cellpadding=0 cellspacing=0>\<tr>\<td width=47 valign=middle>\<img border=0 width=40 height=30 alt="" valign=middle src="\/images\/lunar\/lunar_animal_\d+.gif">\<\/td>\<td valign=top>\<font size=-1>\<table cellspacing=0 cellpadding=2 border=0>\<tr>\<td>\<font size=-1>\S+ (.*)\<\/font>\<\/td>\<td>\<font size=-1>(.+)(.)\<\/font>\<\/td>\<\/tr>\<tr>\<td>\<font size=-1>\S+ (.*)\<\/font>\<\/td>\<td>\<font size=-1>(.*)\<br>\<\/font>\<\/td>\<\/tr>\<\/table>\<\/font>\<\/td>\<\/tr>\<\/table>/';
    do {
        $html = file_get_contents("http://www.google.cn/search?q={$cals[$cal]}$date");
        if( $html != false ) break;
    } while(true);
    
    if(preg_match($pattern, $html, $date)){
        array_shift($date);
        return $date[$format];
    }
    return false;
}
?>

[ 本帖最后由 hemon 于 2007-8-13 10:10 编辑 ]

作者: hemon   发布时间: 2007-08-12

lunar()

作者: caiyuerui   发布时间: 2007-08-15

小偷..

作者: wukeyuan   发布时间: 2007-08-15