2009-09-08 7 views
0

Il semble que lorsque j'ai plusieurs fichiers dans le répertoire '/ var/www/cal/attach /', il extrait seulement les éléments du premier fichier encore et encore. Ai-je besoin d'éliminer les éléments pour que cela fonctionne correctement? Ce que j'essaie de faire est de faire passer le script à travers plusieurs fichiers * .htm, et analyser les données à partir des fichiers dans $ value [x] où je peux appeler plus tard. Pourtant, les mêmes valeurs apparaissent pour plusieurs fichiers ... Qu'est-ce qui ne va pas?Même éléments à partir de plusieurs fichiers DomDocument loadHTMLFile PHP

<?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

Je ne sais pas si ça vous aidera dans ce cas, mais une bonne pratique lors de la recherche d'erreurs est de ne pas les désactiver ;-) donc, en utilisant error_reporting (E_ALL) au lieu de error_reporting (0) pourrait sois gentil... –

Répondre

0

Je recommande d'utiliser l'objet itérateur de répertoire de SPL. L'exemple ci-dessous utilise le récursif, mais vous n'avez pas besoin d'être récursif.

$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"; 
Questions connexes