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

时间:2016-02-29 10:30:52

标签: php file

我有一个包含其他文件路径的文本文件($ 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

我认为问题可能是关于行结尾等等,但不能说明问题。

2 个答案:

答案 0 :(得分:1)

你是对的。 $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>";
    }
}

答案 1 :(得分:1)

这个简短的功能就像一个sharm:

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");

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