PHP -如果文件存在,将数据写入新文件,并在foreach循环中调用生成文件的每一行


PHP - Writing data to a new file if the file exists and call each line of the generated file in a foreach loop

我有一段PHP代码如下:

$write_URLs = fopen("links/WriteURLs.txt", "w");
foreach ($list_URLs as $htmlLink) {
    GetURLs ($htmlLink);
    foreach ($URLs as $URL) {
    fwrite($write_URLs, $URL ."'n");
    }
}
fclose($write_URLs);

上面的代码在每次执行时都会在links/WriteURLs.txt上写入url,因此WriteURLs.txt文件不能保存上次执行的结果。

问题是我想检查links/WriteURLs.txt是否存在,然后开始在新文件上写入url,例如links/01-WriteURLs.txt, links/02-WriteURLs.txt, ... .之后,我想开始从生成的文件(即不是所有文件,只有在最后一步生成的一个)links/WriteURLs.txt, links/01-WriteURLs.txt, links/02-WriteURLs.txt或…,并为每个URL回显HELLO WORLD。下面您可以看到我尝试开发的代码的不完整版本。你能帮我解决这个问题吗?由于

$i = 1;
$write_URLs = fopen("links".DIRECTORY_SEPARATOR. $i. "-WriteURLs.txt", "w");
if(file_exists($write_URLs)) {
    fclose($write_URLs);
    $new_write_URLs = fopen("links".DIRECTORY_SEPARATOR. $i++. "-WriteURLs.txt", "w");
} else {
    foreach ($list_URLs as $htmlLink) {
        GetURLs ($htmlLink);
        foreach ($URLs as $URL) {
        fwrite($new_write_URLs, $URL ."'n");
        }
    }    
}
fclose($new_write_URLs);
$trimmed = file(???????????, FILE_IGNORE_NEW_LINES);
foreach ($trimmed as $URL) {
    echo "Hello World";
}

如果您想从刚刚写完的文本文件中读取数据,您可以简单地跟踪正在处理的文件的名称,然后在稍后的读取过程中使用它,像这样:

$i = 0;
do {
  $filename = "links".DIRECTORY_SEPARATOR . $i++ . "-WriteURLs.txt";
} while (file_exists($filename));
$write_URLs = fopen($filename, "w");
foreach ($list_URLs as $htmlLink) {
      $URLs = GetURLs ($htmlLink);
      foreach ($URLs as $URL) {
      fwrite($write_URLs, $URL ."'n");
    }
}    
fclose($write_URLs);
$trimmed = explode("'n",file_get_contents( $filename ) );
foreach ($trimmed as $URL) {
    echo "Hello World";
}