我有一个文本文件,其中填充了管道分隔的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时,此文本文件应为空
我怎样才能做到这一点?
谢谢, 圣拉斐尔
答案 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', '');