从文本文件 [PHP] 中的路径读取文本文件


Reading textfiles from path in a text file [PHP]

我有一个包含其他文件路径的文本文件 ($file)。我的目标是读取这些文件的内容并将其打印在表格中。从$file读取路径时,只有最后一行路径正常工作。

<?php
    $file = "log2.txt";
    if(file_exists($file)) {            
        $handler = fopen($file,'r');
        while(!feof($handler)) {
            $lines = fgets($handler);
            $wordarray = explode(' ', $lines);
            #echo $wordarray[0]." ".$wordarray[1]." ".$wordarray[2];
            if (strpos($lines, 'NOK') !== false) {
                echo "<tr><td>".$wordarray[0]."</td></tr>";
                if(file_exists($wordarray[2])){
                    $log = fopen($wordarray[2], 'r');
                    #echo "FILE EXISTS ".$log;
                    $logtext = fread($log,filesize($wordarray[2]));
                    echo "<tr><td>".$logtext."</td></tr>";
                    fclose($log);
                } else {
                    echo "<tr><td>"."FILE ".$wordarray[2]." FAILED TO LOAD"."</td></tr>";
                }
            }                
        }
        fclose($handler);
    } else {
        echo "FILE DOES NOT EXISTS";
    }
?>

下面是 log2.txt 的示例:

POE NOK poelog.txt
LINK-ERRORS OK OK
LATENCIES NOK latencieslog.txt
VOLATILE NOK volatilelog.txt

我认为问题可能与行尾有关,但无法理解重点。

你是对的。该$wordarray[2]还包含换行符,因此在使用之前将其传递trim()函数并将其存储在变量中(在我的情况下$filename)。

更新的内部if

if (strpos($lines, 'NOK') !== false) {
    echo "<tr><td>".$wordarray[0]."</td></tr>";
    $filename = trim($wordarray[2]);
    if (file_exists($filename)){
        echo "FILE EXISTS ".$filename;
        $log = fopen($filename, 'r');
        $logtext = fread($log, filesize($filename));
        echo "<tr><td>".$logtext."</td></tr>";
        fclose($log);
    }
    else{
        echo "<tr><td>"."FILE ".$filename." FAILED TO LOAD"."</td></tr>";
    }
}

这个简短的函数就像一个沙姆:

function displayFileContent( $fileName )
{
    $arrayWithFileNames = file ( $fileName );
    echo "<table>";
    foreach ( $arrayWithFileNames as $singleFileName )
    {
        # remove the trailing 'n on Linux - windows has 2 character as EOL
        $singleFileName = trim(preg_replace('/'s's+/', ' ', $singleFileName));
        $contentOfFile = file_get_contents( $singleFileName );
        echo  "<tr><td>{$contentOfFile}</td></tr>";
    }
    echo "</table>";
}

你像这样使用它:

displayFileContent ("path-to-your-file");

备注:没有检查文件是否存在。