[英]Using PHP to extract dates in different formats from a string
我正在使用cURL和WHOIS查詢來檢索不同網站的注冊信息。
問題在於WHOIS查詢返回的字符串格式不同。
我想使用preg_match 將創建日期和到期日期提取到單獨的數組中,例如:
$creation = array(year, month, day);
$expiration = array(year, month, day);
不同的字符串輸出格式如下:
expires: 2014-01-10 14:00:27
created: 2012-01-10 15:00:28
Creation Date: 25-Mar-2010
Expiration Date: 25-Mar-2013
Record created: 14/04/2012
Record expires: 14/04/2013
Record created on.......: Mar 05, 2001
Record expires on.......: Mar 05, 2013
Created on..............: 1997-09-15.
Expires on..............: 2020-09-13.
Expiration Date: 2015-12-26 19:18:07
Creation Date: 2003-12-26 19:18:07
關於如何使用preg_match提取日期的任何線索?
注意 :我已經嘗試使用PHP Whois API類,但是它不能很好地工作,並且使用了不同的XML API,但是數據不完整。
我實際上算出了這個功能:
function creationdate($data)
{
if(preg_match('/Creation Date:/i',$data) == true){
$csta = strpos($data, 'Creation Date:', 0)+14;
$cstb = strpos($data, 'Creation Date:', 0)+27;
$date = trim(substr($data, $csta, $cstb-$csta));
return strtotime($date);};
if(preg_match('/Record created:/i',$data) == true){
$csta = strpos($data, 'Record created:', 0)+15;
$cstb = strpos($data, 'Record expires:', $csta)-2;
$date = substr($data, $csta, $cstb-$csta);
$date = explode('/', $date);
$date = $date[0] .'-'. $date[1] .'-'. $date[2];
return strtotime($date);};
if(preg_match('/Created on..............:(.*?)\./i',$data,$date) == true){
return strtotime($date[1]);};
if(preg_match('/Record created on.......:/i',$data) == true){
$csta = strpos($data, 'Record created on.......:', 0)+26;
$cstb = strpos($data, 'Record expires on.......:', $csta)-5;
$date = substr($data, $csta, $cstb-$csta);
return strtotime($date);};
if(preg_match('/created:/i',$data) == true){
$csta = strpos($data, 'created:', 0)+9;
$cstb = strpos($data, 'created:', 0)+20;
$date = trim(substr($data, $csta, $cstb-$csta));
return strtotime($date);};
return '-';
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.