Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从文本文件[PHP]中的路径读取文本文件_Php_File - Fatal编程技术网

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

从文本文件[PHP]中的路径读取文本文件,php,file,Php,File,我有一个文本文件($file),其中包含指向其他文件的路径。我的目标是读取这些文件的内容并将其打印到表中。从$file读取路径时,只有最后一行路径正确工作。 <?php $file = "log2.txt"; if(file_exists($file)) { $handler = fopen($file,'r'); while(!feof($handler)) { $lines = fgets(

我有一个文本文件($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";
    }
?>

我认为问题可能是关于行尾之类的,但没有抓住重点。

你说得对。
$wordarray[2]
还包含新行字符,因此在使用它之前,请将其通过
trim()
函数并存储在变量中(
$filename

更新的内部
如果

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>";
    }
}
if(strpos($line,'NOK')!==false){
回显“$wordarray[0]”;
$filename=trim($wordarray[2]);
如果(文件_存在($filename)){
echo“文件存在”。$filename;
$log=fopen($filename,'r');
$logtext=fread($log,filesize($filename));
回显“$logtext.”;
fclose($log);
}
否则{
echo“.”文件“%$filename.”加载失败“.”;
}
}

此短函数的工作原理与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($fileName)
{
$arrayWithFileNames=文件($fileName);
回声“;
foreach($arrayWithFileNames作为$singleFileName)
{
#删除Linux上的尾随\n-windows有2个字符作为EOL
$singleFileName=trim(preg_replace('/\s\s+/',''$singleFileName));
$contentOfFile=file\u get\u contents($singleFileName);
回显“{$contentOfFile}”;
}
回声“;
}
您可以这样使用它:

displayFileContent(“文件路径”)


备注:无需检查文件是否存在……

这些其他文件,即
poelog.txt和latencieslog.txt
等是否与此脚本和
log2.txt
存在于同一文件夹中?
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>";
}