文本文件中的PHP多维数组
我在这里寻求帮助。 我试图解析一个以空格分隔的文本文件,并创建一个多维数组。数据文件是Apache2日志文件,但这种经验将适用于许多文本文件 我要做的是读取一条记录(一行),然后: 1.提取源ip地址。 2.检查以前是否看到过此ip地址。 3.提取数据包的目标端口。 4.此ip地址已将数据包发送到此端口的次数总和 因此,在概念上: SRC-IP端口总数文本文件中的PHP多维数组,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我在这里寻求帮助。 我试图解析一个以空格分隔的文本文件,并创建一个多维数组。数据文件是Apache2日志文件,但这种经验将适用于许多文本文件 我要做的是读取一条记录(一行),然后: 1.提取源ip地址。 2.检查以前是否看到过此ip地址。 3.提取数据包的目标端口。 4.此ip地址已将数据包发送到此端口的次数总和 因此,在概念上: SRC-IP端口总数 ----------------------------------- 111.222.111.222-22-3次 232.1.45.8-23-
-----------------------------------
111.222.111.222-22-3次
232.1.45.8-23-23次
-80-1次
-5353-2次
217.163.132.190-23-12次
我可以打开文件并提取源ip,检查以确保其唯一性,如果是,则将其放入数组中。我搞不懂的是如何将目标端口添加为数组中的第二个字段,更不用说如何将所述dest端口的计数添加为数组中的第三个字段。 我在www.php.net上找到的所有示例都过于简单,基本上只是手工填充多维数组。似乎没有人演示如何创建多维数组,然后解释如何以编程方式填充维度 以下是脚本: ` 这是输出的最后一行: 1154个从302个唯一ip地址丢弃的数据包 如果我正在处理的一大块数据有帮助,请告诉我。 这只是一个防火墙日志 任何帮助都将不胜感激。 干杯 特里。更新:
if (($handle = fopen("firewall", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, " ")) !== FALSE) {
if (!isset($src_ip[$data[8]])) {
$src_ip[$data[8]] = array();
}
foreach ($data as $value) {
if (strstr($value, $dest_port)) {
if (!isset($src_ip[$data[8]][$value]))
$src_ip[$data[8]][$value] = array('count' => 0);
$src_ip[$data[8]][$value]['count'] += (int)$THIS_ROWS_COUNT;
print($data[8]) . " ";
print($value) . "\n";
}
}
$row++;
}
}
$arr[$ip][$port][]=array(…此处的其他数据字段)
?尝试获取类似的内容,是的。泰!我在我原来的帖子中看到有几行被截断了//
if (($handle = fopen("firewall", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, " ")) !== FALSE) {
if (!isset($src_ip[$data[8]])) {
$src_ip[$data[8]] = array();
}
foreach ($data as $value) {
if (strstr($value, $dest_port)) {
if (!isset($src_ip[$data[8]][$value]))
$src_ip[$data[8]][$value] = array('count' => 0);
$src_ip[$data[8]][$value]['count'] += (int)$THIS_ROWS_COUNT;
print($data[8]) . " ";
print($value) . "\n";
}
}
$row++;
}
}