Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> usuwanie lini z pliku
-Gość_Romek-
post 19.12.2005, 16:40:30
Post #1





Goście







Potrzebuje zrobic cos takiego: otwieram plik z adresami pocztowymi np. mail.txt ktory jest w formacie
adres@wp.pl blabla
innyadres@onet.pl blabla

Dopisuje same adresy pocztowe do inengo pliku np. inny.txt, w formie

stalyadres@poczta.pl: adres@wp.pl, innyadres@onet.pl

Problem pojawia sie wtedy gdy taki wpis (zaczynajacy sie od stalyadres@poczta.pl) istnieje juz w inny.txt, wowczas skrypt powinien najpierw usunac linie zawierajaca taki wpis, a nastepnie dodac powyzszy wpis, czyli:

stalyadres@poczta.pl: adresy@z.mail.txt.pl, inny_adres@z.mail.txt.pl
Jak to zrobic? worriedsmiley.gif
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
crash
post 19.12.2005, 19:45:02
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----


A poszukać to nie łaska?! http://forum.php.pl/index.php?showtopic=3260
Dodaj do tego sprawdzanie linii (np. w pętli) i już...


--------------------
Go to the top of the page
+Quote Post
-Gość_Romek-
post 20.12.2005, 13:15:34
Post #3





Goście







Narazie zrobilem cos takiego:

Kod
$tablica = file("mail.txt","r");

  foreach($tablica as $linia)
  {
                        
   }


Teraz jak powinien wygladac warunek w petli, jezeli chce zeby poznalezieniu lini ktora zawiera
Kod
stalyadres@poczta.pl:

linia ta byla usuwana?
Go to the top of the page
+Quote Post
-Gość_Romek-
post 20.12.2005, 14:12:58
Post #4





Goście







Narazie warunek w petli jest taki:
Kod
if (strstr($linia, "stalyadres@poczta.pl"))
                    unset($linia);
fopen("mail.txt", "a");
fputs($tablica, $linia);
fclose($tablica);


problem lezy w trybie otwarcia fopen() pliku mail.txt, poniewaz wczesniej otwieram go juz przez file() w tybie "r". Jak moge zapisac zmiany w pliku (konkretnie usuniecie jednej lini) z pominieciem tworzenia jakiegos pliku tymczasowego?
Go to the top of the page
+Quote Post
-phpion.com-
post 20.12.2005, 14:32:08
Post #5





Goście







Wczytaj plik do tablicy, nastepnie w petli znajdz index tablicy, przy ktorym wartosc bedzie == tej ktora chcesz usunac, nastepnie otworz plik w trybie w+ i wpisz do niego tablice z warunkiem, ktory sprawdzi czy wpisywana linia ma rozny numer (index z tablicy) od tej, ktora chcesz usunac
Go to the top of the page
+Quote Post
-Guest-
post 20.12.2005, 15:00:15
Post #6





Goście







Napisalem cos takiego,ale nie dziala:
Kod
                $tablica = file("mail.txt");

                $index = 0;

                foreach($tablica as $linia)
                {
                        if (strstr($linia, "do_usuniecia@onet.pl"))
                                $szukany = $index;
                                //unset($linia);

                        echo $szukany;
                        $index++;
                }

                $fp = fopen("mail.txt", "w+");

                foreach($tablica as $linia2)
                {
                        if ($index != $szukany)
                                fputs($fp, $linia2);
                        else
                                continue;
                }
                fclose($fp);
Go to the top of the page
+Quote Post
crash
post 20.12.2005, 15:06:31
Post #7





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $dane = file( 'mail.txt' );
  3.  
  4. foreach( $dane as $idx => $linia )
  5. {
  6.  if( strpos( $linia, 'do_usuniecia@onet.pl' ) === true )
  7.  {
  8. unset( $dane[ $idx ] );
  9.  }
  10. }
  11.  
  12. if( $fp = fopen( 'mail.txt', 'w' ) )
  13. {
  14.  fputs( $fp, implode( '', $dane ) );
  15.  fclose( $fp );
  16. }
  17. ?>


--------------------
Go to the top of the page
+Quote Post
-Guest-
post 20.12.2005, 15:19:23
Post #8





Goście







Dzieki za pomoc.
Zamiast strpos() uzylem strstr() i poszlo. smile.gif
Go to the top of the page
+Quote Post
v1t4n
post 20.12.2005, 15:43:52
Post #9





Grupa: Zarejestrowani
Postów: 111
Pomógł: 16
Dołączył: 19.02.2005
Skąd: Dębica

Ostrzeżenie: (0%)
-----


Romciu, a nie lepiej jakbys sobie to zrobil w bazach? No nie wiem jezeli koniecznie na plikach to radzilbym zrobic sobie cos takiego
mail.txt:
  1. <?php
  2.  
  3. $adres1="asd";
  4. $adres2="asdf";
  5.  
  6. ?>


  1. <?php
  2.  
  3. //adres delikwenta :)
  4. $adresss=("wacek-kraweznik@vip.com");
  5.  
  6. //otwieramy licznik adresow
  7. $plik1=fopen("licznik.txt", "r+");
  8.  
  9. //otwieramy plik z adresami
  10. $plik2=fopen("mail.txt", "r+");
  11.  
  12. //pobieramy liczbe z licznika
  13. $numer=fgets($plik1);
  14.  
  15. //pobieramy liste adresow
  16. $adresy=fread($plik2);
  17. $a=1;
  18. $b=1;
  19. while($a < "$numer + 1")
  20. {
  21. while($b < "$numer + 1")
  22. {
  23. if($a ! $b)
  24. {
  25. if($adres$a ! $adres$b)
  26. {
  27. $licznik++;
  28. $adres$licznik=$adresss
  29. fwrite($plik2, $adres$licznik);
  30. fwrite($plik1, $licznik);
  31. fclose($plik1);
  32. fclose($plik2);
  33. }
  34. else
  35. {
  36. echo("Podany adres e-mail juz istnieje w bazie danych")
  37. }
  38. }
  39. }
  40. }
  41.  
  42. ?>


--------------------
Psik!! A masz!! ...chamie - Porucznik Borewicz
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 02:27