2016-01-02 3 views
2

Я перебираю строки в своей базе данных, чтобы получить информацию из результатов whois.Использование PHP для получения данных whois?

Вот что я прямо сейчас:

function GetEmailFromWhois($domain){ 
    $whois = new Whois(); 
    $query = $domain; 
    $whois->deep_whois=TRUE; 
    $result = $whois->Lookup($query, false); 
    $raw_data = $result["rawdata"]; 

    $email = ""; 

    foreach($raw_data as $item){ 
     $items = explode(":",$item); 
     if($items[0] == "Registrant Email"){ 
      $email = $items[1]; 
     } 
    } 
    return $email; 
} 

Код выше получает Registrant Email от WhoIs результатов.

я ссылаться на него позже в своем коде, как это: $email = GetEmailFromWhois($domain);

Однако, в то же время, как получение регистраций по электронной почте, я хотел бы также получить Registrant Name, Registrant Phone и Registrant Country.

Я мог бы просто скопировать код выше 3 раз для каждого из этих дополнительных полей, но это вызовет 4 запроса whois для каждого домена - вместо одного.

Кто-нибудь знает, как я могу получить информацию, которая мне нужна в одном запросе, а затем использовать ее позже в моем коде?

+0

Я предлагаю использовать 'var_dump()', чтобы сбрасывать результат поиска и посмотреть, есть ли уже данные, которые вы ищете, вместо использования необработанных данных. –

ответ

2

Как я недавно отметил в другом ответе, parsing WHOIS data is a complex, messy affair. Точный формат ответов WHOIS не указан никаким стандартом, и не все реестры/регистраторы будут использовать формат, который вы пытаетесь проанализировать здесь. (Некоторые используют разные метки для маркировки полей, которые вы ищете, некоторые используют ярлыки, которые неоднозначны без контекста, некоторые не маркируют определенные поля вообще, а некоторые даже не включают информацию, которую вы ищете здесь.) Хуже того, некоторые реестры/регистраторы будут сильно влиять на вас, если станет очевидным, что вы пытаетесь извлечь из них несколько ответов. Короче говоря, я бы рекомендовал вам избегать попытки проанализировать ответы WHOIS, если это вообще возможно.

, чтобы решить вашу немедленного проблема, хотя, вы можете создать ассоциативный массив для представления WHOIS ответа, как так:

$arr = []; 
foreach($raw_data as $item) { 
    list($k, $v) = explode(":", $item); 
    $arr[$k] = $v; 
} 

Это даст вам ассоциативный массив результатов, так что вы можете вытащить из отдельных значений, например,

$email = $arr["Registrant Email"]; 
+0

Привет, я получаю 'PHP Parse error: синтаксическая ошибка, неожиданная '[' on line 18', которая является этой строкой:' $ arr = []; ' – user10848

+0

@ user10848 Похоже, вы используете старую версию PHP , Перейдите на поддерживаемую версию (> = 5.5) и повторите попытку. – duskwuff

Смежные вопросы