私はこのスクリプトに近づいていると思っています。ドメイン名を1行だけ出力ファイルに書き出すことができるようになりました。理想的には、返されるすべての配列に対してすべての配列フィールドを書き出す必要があります。
function getDNS(){
if(file_exists($outputFile)){ unlink($outputFile);
}
$outputFile = 'DNS-Output.csv';
$inputFile = fopen('DNS-input.csv','r');
$output = NULL;
//make sure we loop through to end of file contents
$newOutput = 'Domain, IP Address, Exiration Date, Record Type, TTL, Cloud' . PHP_EOL;
$output .= $newOutput;
while (!feof($inputFile)) {
$line = fgets($inputFile, 4096);
$array = explode(",",$line);
$result = dns_get_record($array[0], DNS_A + DNS_SOA); // get DNS info
if ( ! is_array( $result )){
$results = explode(",",$result);
}
print_r($result);
$whois = shell_exec("whois " . $result[0]['ip'] . " | grep" . " NetName");
$whois = preg_split("/[\s,]+/", $whois);
if ( ! is_array( $whois )){
$result = explode(",",$whois);
}
//if array
if ( is_array($whois)){
$whois[0]['host'].", " . PHP_EOL; // Domain Name
//print_r($whois);
}
foreach ($whois as $record) {
$output .= $record;
/* $output .=
$record['host'].", " . // Domain Name
$record['ip'].", ". // IP Address
$record['type'].", ". // Type of Record
$record['minimum-ttl'].", ".PHP_EOL; // Minimum TTL
*/
}
file_put_contents($outputFile, $output); // Create CSV File
}
//file_put_contents($outputFile, $output); // Create CSV File
fclose($inputFile);
}
getDNS();
そして、これが私がルックアップを行っている入力csvファイルからの例の行です...。
somedomain.COM,.com,9/14/06 19:03,9/14/12 19:03,Active,Public,Locked,"ns31.domaincontrol.com(), ns32.domaincontrol.com()",,
配列要素をcsv出力ファイルの適切な列に書き出すための最良の方法を探しています。