>编辑:此问题已修复。问题是"gethostbyname"正在从文件中获取新行。谢谢AbraCadaver指出这一点。
我有一个正在转换为数组的 CSV 数据列表,CSV 数据有两列,一个帐户和一个域名。我的工作是检查所有域名,将它们转换为IP,并确定我们是否拥有IP地址。但问题是"gethostbyname"函数仅适用于数组中的最后一项。我做错了什么?
<?php
// Error reporting
ini_set("display_startup_errors", 1);
ini_set("display_errors", 1);
error_reporting(-1);
// Load the CSV file
$rawInput = file("data.csv");
// Format the data
$newData = array();
foreach ($rawInput as $entry) {
$exData = explode(",", $entry);
array_push($newData, array(
"account" => $exData[0],
"address" => $exData[1]
));
}
// Let the magic begin...
$finalOutput = "";
foreach ($newData as $dataEntry) {
// Check if we own the IP
$ipAdrr = gethostbyname("www.".$dataEntry["address"]."."); // It doesn't work without the trailing '.' too
$exData = explode(".", $ipAdrr);
var_dump($exData); echo("<br>");
/*if (intval($exData[0]) == 188 && intval($exData[0]) == 64) {
}*/
}
// Finalise table
$finalOutput = $finalOutput."'t't't</table>'n";
?>
CSV 文件如下所示。
example,example.com
example,example.com
example,example.com
example,example.com
example,example.com
example,example.com
example,example.com
example,example.com
example,example.com
example,example.com
非常感谢任何帮助!
file()
保留在gethostbyname()
调用中不起作用的换行符。 此外,您将在末尾添加一个.
,因此除了最后一个条目外,您还有:
www.example.com
.
在file()
调用中使用FILE_IGNORE_NEW_LINES
,或者在使用字符串之前对字符串使用 trim()
。