文件一次读取所有行

时间:2016-09-27 17:21:48

标签: php

我正在编写一个小脚本来帮助我将文件从一个目录复制到另一个目录。我正在使用带有几百行的.txt文件的输入来告诉脚本从哪里复制文件。出于某种原因,它不是逐个读取和编辑文件中的行,而是在整个文件中运行一次,并将所有值一起添加。

示例:$ from_location上的echo将显示为:

http://localhost:8888/copy_images/media_catalog/products/0/6/06-2821.jpg /media_catalog/products/1/1/11-1256.jpg /media_catalog/products/1/1/11-1258.jpg /media_catalog/products/1/1/11-1260.jpg

而不是它应该读的是:

http://localhost:8888/copy_images/media_catalog/products/0/6/06-2821.jpg http://localhost:8888/copy_images/media_catalog/products/1/1/11-1256.jpg http://localhost:8888/copy_images/media_catalog/products/1/1/11-1258.jpg http://localhost:8888/copy_images/media_catalog/products/1/1/11-1260.jpg

请在此处查看脚本:     

$handle = fopen("images.txt", "r");

if ($handle) {
    while (($line = fgets($handle)) !== false) {

        $from_location = 'http://localhost:8888/copy_images' . $line;
        $create_location = str_replace('media_catalog','catalog',$line);
        $to_location = 'http://localhost:8888/copy_images' . $create_location;
    }

    fclose($handle);
} else {
    // error opening the file.
} 
?>

我很想知道我做错了什么,所以我可以改进我的PHP前进!

  • 尼克

1 个答案:

答案 0 :(得分:0)

您通过HTML看到了结果,因此在添加<br>代码之前,没有换行符。

正确打印:

<?php

$handle = fopen("images.txt", "r");

if ($handle) {
    while ( ($line = fgets($handle)) !== false ) {
        $from_location = 'http://localhost:8888/copy_images' . $line;
        $create_location = str_replace('media_catalog','catalog',$line);
        $to_location = 'http://localhost:8888/copy_images' . $create_location;

        echo $line . '<br>';
    }
    fclose($handle);
} else {
    // error opening the file.
} 

忽略HTML呈现,您只需在header("Content-Type: text/plain");之后添加<?php即可。因此,您不需要在<br>的末尾添加echo

干杯。