一次读取所有行文件


File reading all lines at once

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

示例:echo on $from_location将读取:

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/产品/0/6/06 - 2821. jpghttp://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前进!

    尼克

你通过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渲染,您可以在<?php之后添加header("Content-Type: text/plain");。因此,您不需要在echo的末尾添加<br>

欢呼。