<?
class
weather {
static
$url
= 'http:
static
$city
= 'Beijing';
static
$weatherXML
= '';
static
public
function
getXML() {
header ( 'Content-Type: text/html; charset = utf-8' );
if
(isset (
$_GET
['city'] )) {
self::
$city
=
empty
(
$_GET
['city'] ) ? 'Beijing' :
$_GET
['city'];
}
$contents
=
file_get_contents
( self::
$url
. self::
$city
)
or
die
( '查询出错' );
self::
$weatherXML
=
date
(
"Ymd"
) . '-' . self::
$city
. '-weather.xml';
if
(
is_file
( self::
$weatherXML
)) {
$fileTime
=
filemtime
( self::
$weatherXML
);
$stater
= time () -
$fileTime
- 60 * 60 * 2;
if
(
$stater
< 0) {
self::cacheXML (
$contents
);
}
return
true;
}
self::cacheXML (
$contents
);
}
static
public
function
analysisXML() {
if
(
is_file
( self::
$weatherXML
)) {
$xml
= simplexml_load_file ( self::
$weatherXML
);
}
else
{
$xml
= simplexml_load_file ( self::
$url
. self::
$city
);
}
$xml
= (
array
)
$xml
;
$city
= (
array
)
$xml
['weather']->forecast_information->city;
if
(isset (
$xml
['weather']->problem_cause )) {
$problem
= (
array
)
$xml
['weather']->problem_cause;
echo
$problem
['@attributes'] ['data'];
return
;
}
$conditions
= (
array
)
$xml
['weather']->current_conditions->condition;
$humidity
= (
array
)
$xml
['weather']->current_conditions->humidity;
$temp_c
= (
array
)
$xml
['weather']->current_conditions->temp_c;
$conditions_icon
= (
array
)
$xml
['weather']->current_conditions->icon;
$wind_condition
= (
array
)
$xml
['weather']->current_conditions->wind_condition;
$forecast
= (
array
)
$xml
['weather'];
$forecast
= (
array
)
$forecast
['forecast_conditions'];
$html
= '';
foreach
(
$forecast
as
$key
=>
$val
) {
${'day_of_week_' .
$key
} = (
array
)
$val
->day_of_week;
${'low_' .
$key
} = (
array
)
$val
->low;
${'high_' .
$key
} = (
array
)
$val
->high;
${'icon_' .
$key
} = (
array
)
$val
->icon;
${'condition_' .
$key
} = (
array
)
$val
->condition;
$html
.= "
{${'day_of_week_'.
$key
}['@attributes']['data']} http:
{${'low_'.
$key
}['@attributes']['data']}°C | {${'high_'.
$key
}['@attributes']['data']}°C
";
}
self::printCss ();
echo
<<
{
$city
['@attributes']['data']}
http:
{
$temp_c
['@attributes']['data']}°C
当前: {
$conditions
['@attributes']['data']}
{
$wind_condition
['@attributes']['data']}
{
$humidity
['@attributes']['data']}
$html
weather;
}
static
public
function
printCss() {
echo
<<
css;
}
static
private
function
cacheXML(
$contents
) {
$contents
=
str_ireplace
( '',
" \n"
,
$contents
);
$contents
= mb_convert_encoding (
$contents
, 'utf-8', 'gbk' );
file_put_contents
( self::
$weatherXML
,
$contents
)
or
die
( '没有写权限' );
}
}
weather::getXML ();
weather::analysisXML ();
?>