0

cURL および WHOIS クエリを使用して、さまざまな Web サイトの登録情報を取得しています。

問題は、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 でもデータが不完全です。

4

1 に答える 1

0

私は実際にこの機能を解決しました:

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 '-';

}
于 2012-11-24T09:42:06.913 に答える