写入文本文件(PHP)

写入文本文件(PHP),php,Php,我知道这个问题可能是直截了当的,但我对php和编程是新手。。。 我希望将递归搜索的结果写入文本文件,并确保执行的任何其他搜索不会覆盖现有数据,而是添加到现有数据中 这是我的密码: <?php $it = new RecursiveDirectoryIterator("L:\folder\folder\folder"); $display = Array ( 'jpeg', 'jpg', 'tif', 'tiff', 'bmp', 'shp', 'gif', 'png' ); fo

我知道这个问题可能是直截了当的,但我对php和编程是新手。。。 我希望将递归搜索的结果写入文本文件,并确保执行的任何其他搜索不会覆盖现有数据,而是添加到现有数据中

这是我的密码:

 <?php 

$it = new RecursiveDirectoryIterator("L:\folder\folder\folder"); 
$display = Array ( 'jpeg', 'jpg', 'tif', 'tiff', 'bmp', 'shp', 'gif', 'png' ); 
foreach(new RecursiveIteratorIterator($it) as $file) 
{ 
    if ( In_Array ( SubStr ( $file, StrrPos ( $file, '.' ) + 1 ), $display ) == true )
    { 
        echo $file . "<br/> \n"; 
    }
}

?>


因此,与其重复结果,我宁愿将其写入文本文件。此外,如果可能,回显结果并将其写入文本文件。请告诉我可以添加哪些代码来实现此目的,谢谢:)

您所需的全部内容应包括以下内容:

$myFile = "file.txt"; // name of the file
$fh = fopen($myFile,'a') or die("Can't open file"); // opens the file in "append" mode
fwrite($fh,$file); // write to the end of the file
fclose($fh); // close the file
尝试:

<?php 

$it = new RecursiveDirectoryIterator("L:\folder\folder\folder"); 
$display = Array ( 'jpeg', 'jpg', 'tif', 'tiff', 'bmp', 'shp', 'gif', 'png' ); 

$fp = fopen("output.txt", "a");

foreach(new RecursiveIteratorIterator($it) as $file) 
{ 
    if ( In_Array ( SubStr ( $file, StrrPos ( $file, '.' ) + 1 ), $display ) == true )
    { 
        //echo $file . "<br/> \n"; 
        fwrite($fp, $file."\n");
    }
}

fclose($fp);
?>

有关写入文件的更多信息,请参见

file_put_contents($filename,$data);
应用于示例代码

 <?php 

$it = new RecursiveDirectoryIterator("L:\folder\folder\folder"); 
$display = Array ( 'jpeg', 'jpg', 'tif', 'tiff', 'bmp', 'shp', 'gif', 'png' ); 
foreach(new RecursiveIteratorIterator($it) as $file) 
{ 
    if ( In_Array ( SubStr ( $file, StrrPos ( $file, '.' ) + 1 ), $display ) == true )
    { 
        file_put_contents('output.txt',$file . "\n",FILE_APPEND); 
    }
}
更改:

echo $file . "<br/> \n";

这将把每个匹配行追加到“您的文本文件”中的新行。

您需要用几行代码修改脚本

<?php 

$fhandler = fopen('file.txt', 'a'); // Flag 'a' prevents your script from deleting  
                                    // previous data from file 

$it = new RecursiveDirectoryIterator("L:\folder\folder\folder"); 
$display = Array ( 'jpeg', 'jpg', 'tif', 'tiff', 'bmp', 'shp', 'gif', 'png' ); 
foreach(new RecursiveIteratorIterator($it) as $file) 
{ 
    if ( In_Array ( SubStr ( $file, StrrPos ( $file, '.' ) + 1 ), $display ) == true )
    { 
        fwrite($fhandler, $file);  // Writing fileName to the file
        echo $file . "<br/> \n"; 
    }
}

fclose($fhandler);
?>

有关更多详细信息,请参阅函数。查看fopen()的可能模式列表。你可以找到最适合你的情况。

对于这类问题总是很好的

下面是关于fwrite()函数文档中的“示例#1一个简单的fwrite()示例”的副本


实际上,我更喜欢在循环中不使用IO操作:

$display = array ( 'jpeg', 'jpg', 'tif', 'tiff', 'bmp', 'shp', 'gif', 'png' ); 

$it = new RecursiveDirectoryIterator("L:\folder\folder\folder"); 

$output = null;

foreach(new RecursiveIteratorIterator($it) as $file) 
{ 
    if (in_array ( pathinfo($file, PATHINFO_EXTENSION), $display ))
    { 
        echo $file . "<br/> \n";
        $output .= $file."\n"; 
    }    
}

file_put_contents("output.txt", $output, FILE_APPEND);
$display=array('jpeg','jpg','tif','tiff','bmp','shp','gif','png');
$it=new RecursiveDirectoryIterator(“L:\folder\folder\folder”);
$output=null;
foreach(新的递归迭代器($it)作为$file)
{ 
if(在数组中(路径信息($file,路径信息扩展名),$display))
{ 
echo$文件。“
\n”; $output.=$file.“\n”; } } 文件内容(“output.txt”,$output,file\u APPEND);
此外,我还去掉了一些代码的气味-->“array”而不是“array”,最后还去掉了“==true”(没有必要将布尔值与true进行比较,不管它是不是)


最后,使用比较扩展名。

这将对循环中的文件执行打开/关闭操作,这不是一个好主意。在循环之前打开文件并在循环之后关闭文件更有效。
<?php
$filename = 'test.txt';
$somecontent = "Add this to the file\n";

// Let's make sure the file exists and is writable first.
if (is_writable($filename)) {

    // In our example we're opening $filename in append mode.
    // The file pointer is at the bottom of the file hence
    // that's where $somecontent will go when we fwrite() it.
    if (!$handle = fopen($filename, 'a')) {
         echo "Cannot open file ($filename)";
         exit;
    }

    // Write $somecontent to our opened file.
    if (fwrite($handle, $somecontent) === FALSE) {
        echo "Cannot write to file ($filename)";
        exit;
    }

    echo "Success, wrote ($somecontent) to file ($filename)";

    fclose($handle);

} else {
    echo "The file $filename is not writable";
}
?>
$display = array ( 'jpeg', 'jpg', 'tif', 'tiff', 'bmp', 'shp', 'gif', 'png' ); 

$it = new RecursiveDirectoryIterator("L:\folder\folder\folder"); 

$output = null;

foreach(new RecursiveIteratorIterator($it) as $file) 
{ 
    if (in_array ( pathinfo($file, PATHINFO_EXTENSION), $display ))
    { 
        echo $file . "<br/> \n";
        $output .= $file."\n"; 
    }    
}

file_put_contents("output.txt", $output, FILE_APPEND);