首先你必須分析在頭信息中給出的日期:
$header = "Expires: Mon, 22 Nov 2011 10:01:22 GMT";
preg_match(
"/Expires: [A-Za-z]+, ([0-9]{1,2}) ([A-Za-z]+) ([0-9]{4}) ([0-9:]+) ([A-Z]{3})/",
$header,
$matches
);
$months = array(
"Jan" => "01",
"Feb" => "02",
"Mar" => "03",
"Apr" => "04",
"May" => "05",
"Jun" => "06",
"Jul" => "07",
"Aug" => "08",
"Sep" => "09",
"Oct" => "10",
"Nov" => "11",
"Dec" => "12"
);
$day = $matches[1];
$month = $months[$matches[2]];
$year = $matches[3];
$time = $matches[4];
$zone = $matches[5];
$date = new DateTime("$year-$month-$day $time", new DateTimeZone($zone));
,那麼你可以檢查此與實際時間,只有執行更新,如果達到從上次更新$日期
$now = new DateTime();
if($now > $date);
您下載的XML解析和日期後,你應該保存在一個文件或數據庫的$日期。 下一次執行腳本時,只需根據新的DateTime()檢查保存的日期以查看是否已經更新它,如果不是,則可以從文件加載保存的XML。
將XML保存爲文件很好,可以將它保存到數據庫,但我不會爲保存一個XML結構而設置數據庫。如果您想保留舊的XML歷史記錄,則數據庫將再次有意義。
請注意,這將已經使用正確提供的時區。 – zuloo
好吧,但我怎麼只抓住過期:星期一,2011年11月22日10時01分22秒,而不是所有的頭? –
只是放在完整的標題,正則表達式應該只是符合過期的東西線... – zuloo