似乎当我在'/ var / www / cal / attach /'目录中有多个文件时,它只反复从第一个文件中提取元素。我是否需要以某种方式清除元素以使其正常工作? 我要做的是让脚本经过多个* .htm文件,并将文件中的数据解析为$ value [x],我可以在以后调用。然而,相同的值显示多个文件......出了什么问题?
<?php
error_reporting(0);
$today = date("Y-m-d");
foreach (glob("/var/www/cal/attach/*.htm") as $filename) {
$file = $DOCUMENT_ROOT. "$filename";
$doc = new DOMDocument();
$doc->loadHTMLFile($file);
$elements = $doc->getElementsByTagName('td');
if (!is_null($elements)) {
foreach ($elements as $element) {
$nodes = $element->childNodes;
foreach ($nodes as $node) {
$value[] = $node->nodeValue. "\n";
}
}
}
echo "date,test,response time,availability,$filename\n";
echo $today . "," . trim($value[25]) . "," . trim($value[26]) . "," . trim($value[27]) . "\n";
echo $today . "," . trim($value[31]) . "," . trim($value[32]) . "," . trim($value[33]) . "\n";
echo $today . "," . trim($value[37]) . "," . trim($value[38]) . "," . trim($value[39]) . "\n";
}
?>
答案 0 :(得分:0)
我建议使用SPL中的目录迭代器对象。下面的示例使用递归的示例,但您不必递归。
$dir_iterator = new RecursiveDirectoryIterator("/path");
$iterator = new RecursiveIteratorIterator($dir_iterator, RecursiveIteratorIterator::SELF_FIRST);
// could use CHILD_FIRST if you so wish
$size = 0;
foreach ($iterator as $file) {
if ($file->isFile()) {
echo substr($file->getPathname(), 27) . ": " . $file->getSize() . " B; modified " . date("Y-m-d", $file->getMTime()) . "\n";
$size += $file->getSize();
}
}
echo "\nTotal file size: ", $size, " bytes\n";