第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

使用 RegExp 從 Whois 中提取信息

使用 RegExp 從 Whois 中提取信息

PHP
九州編程 2022-11-12 13:19:32
如何從 Whois 查詢結(jié)果中提取多個(gè)分段?我得到一個(gè)形成 Whois 查找結(jié)果的數(shù)組(來自 foreach 循環(huán))。例如,如果我想要從 WHOIS 數(shù)據(jù)庫(kù)的“域....”行到“>>> 上次更新”的所有內(nèi)容:-line。我怎么做?Whois 是使用 exec 命令執(zhí)行的:foreach ($query as $domain) {                           $scanUrl = 'whois '.$domain->url;            exec($scanUrl, $output);                 }Whois 可以正常工作,我可以使用 preg_grep 獲取創(chuàng)建的、過期的和注冊(cè)商:    $domainCreated  = preg_grep('/created/', $output);    $domainExpires  = preg_grep('/expires/', $output);    $domainRegistrar  = preg_grep('/registrar..........:/', $output);但是我需要得到的是數(shù)組中的多個(gè)部分,例如從域...行到 >>> WHOIS 數(shù)據(jù)庫(kù)的最后更新:-行。
查看完整描述

1 回答

?
FFIVE

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊

一種處理方法是獲取命令$output返回的數(shù)組并將exec其轉(zhuǎn)換回單個(gè)字符串:


$text = implode("\n", $output)

然后使用preg_match_all獲取所有關(guān)鍵字和值


preg_match_all('/^(.*?)\\.*: (.+)/m', $text, $matches);

然后$matches[1][n]將具有關(guān)鍵字n并$matches[2][n]具有值n。


正則表達(dá)式演示


^             # Start of line in multiline mode

(             # Start of capture group 1

   .*?        # Match 0 or more characters until ...

)             # End of capture group 1

\.*           # Match 0 or more periods

:             # Match a colon followed by a space

(             # Start of capture group 2

   .+         # Match 1 or more characters up to but not including a newline

)             # End of capture group 2

更新


每次通過循環(huán),您將處理一個(gè)域和關(guān)鍵字/值對(duì)。你將如何處理這些取決于你。


foreach ($query as $domain) {

    $scanUrl = 'whois '. $domain->url;

    $output = []; // start with an empty array

    exec($scanUrl, $output);

    $text = implode("\n", $output);

    preg_match_all('/^(.*?)\\.*: (.+)/m', $text, $matches);

    $n = count($matches[1]); // number of keyword/value pairs

    for ($i = 0; $i < $n; $i++) {

        // display next keyword/value pair:

        echo $matches[1][$i], "->", $matches[2][$i], "\n";

    }

}

更新 2


與其將exec命令返回的行數(shù)組合并為單個(gè)字符串并做,這將為您提供一個(gè)匹配數(shù)組,不如對(duì)命令中的各個(gè)輸出行preg_match_all進(jìn)行單獨(dú)調(diào)用可能更方便:preg_matchexec


foreach ($query as $domain) {

    $scanUrl = 'whois '. $domain->url;

    $output = []; // start with an empty array

    exec($scanUrl, $output);

    foreach ($output as $line) {

         if (preg_match('/^(.*?)\\.*: (.+)/', $line, $matches)) {

             echo $matches[1], "->", $matches[2], "\n";

         }

    }    

}


查看完整回答
反對(duì) 回復(fù) 2022-11-12
  • 1 回答
  • 0 關(guān)注
  • 129 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)