2010-10-30 8 views
3

J'ai un fichier texte, rempli de tubes séparés URL, comme ceci:Lire une ligne d'un fichier texte, puis supprimez-

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

etc.

J'ai actuellement ce code pour lire chaque URL du fichier et de passer à une fonction:

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

    foreach ($urlarray as $url) { 

    function1($url); 

    } 

?> 

ce que je veux faire ensuite est, après function1() est fait, supprimer cette URL de la manière file.That texte, lorsque le script se fait aller à travers toutes les URL dans urls.txt, ce texte f ile devrait être vide.

Comment puis-je y parvenir?

Merci, Rafael

Répondre

3

Il n'y a pas moyen de supprimer des choses depuis le début ou au milieu d'un fichier texte sans réécrire la chose. See here. Il suffit de parcourir toutes les URL, puis supprimer le fichier, ou implode() toutes les URL restantes et remplacer le fichier original avec elle.

+0

Ah oui c'était mon plan B. Merci! – RafaelM

0

Vous pouvez tirer la première URL de la liste a explosé, l'implosion et l'écrire dans le fichier:

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

    $first_url = array_shift($urls); 

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

    function1($first_url); 
} 

Attendez-vous que ce processus soit interrompu? Dans le cas contraire, il est plus logique de supposer simplement que toutes les URL seront traitées, et en blanc le fichier lorsque le programme est complet:

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

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

Non, j'ai besoin de supprimer l'URL des fichiers urls.txt après qu'elle a été traitée par function1() – RafaelM

+0

Ma solution fonctionnera alors, si vous l'enveloppez simplement dans une boucle while, mais elle fait exactement ce que kijin a suggéré: Réécriture le fichier entier à chaque fois. – meagar

2

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

Questions connexes