从文本文件中读取一行,然后将其删除

时间:2010-10-30 04:09:31

标签: php

我有一个文本文件,其中填充了管道分隔的URL,如下所示:

http://www.example.com|http://www.example2.com|http://www.example3.com|.... 

我目前有这段代码从文件中读取每个url并将其传递给函数:

<?php
  $urlarray = explode("|", file_get_contents('urls.txt'));

  foreach ($urlarray as $url) {

   function1($url);

   }

?>   

我接下来要做的是,在完成function1()之后,从文本文件中删除该URL。这样,当脚本完成遍历urls.txt中的所有URL时,此文本文件应为空

我怎样才能做到这一点?

谢谢, 圣拉斐尔

3 个答案:

答案 0 :(得分:3)

没有办法从文本文件的开头或中间删除内容而不重写整个内容。 See here。只需浏览所有网址,然后删除该文件,或implode()任何剩余的网址,并用它覆盖原始文件。

答案 1 :(得分:2)

$urlarray = explode("|", $contents = file_get_contents('urls.txt'));
print_r($contents);
foreach ($urlarray as $url) {
   $tempcontent = str_replace($url . "|", " ", $contents, $x = 1);
    $contents = $tempcontent;
   $fp = fopen('urls.txt', "w");
   fwrite($fp, $contents);
   fclose($fp);
}

答案 2 :(得分:0)

您可以拉出爆炸列表的第一个网址,将其内嵌并将其写回文件:

while($urls = explode('|', file_get_contents('urls.txt'))) {

  $first_url = array_shift($urls);

  file_put_contents('urls.txt', implode('|', $urls));

  function1($first_url);
}

您是否希望此过程中断?如果没有,那么简单地假设所有URL都将被处理更有意义,并在程序完成时将文件空白:

foreach (explode('|', file_get_contents('urls.txt') as $url) {
  function1($url);
}

file_put_contents('urls.txt', '');