Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyszukanie w pliku odpowiedniej linijki i modyfikacja jej ( lub usunięcie )
Giluś
post 6.03.2011, 18:03:43
Post #1





Grupa: Zarejestrowani
Postów: 377
Pomógł: 9
Dołączył: 2.11.2010

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


Cześć chciałbym wyszukać w pliku "tekst.txt" pewną linijkę zapisaną (wcześniej) w takiej formie:
  1. $dane = "".$ip.",".$nick.",".$nicko.",".$powod."\n";

a następnie chciałbym aby ta linijka została usunięta.

Jakiej funkcji użyć, czego szukać w manualu... ?
Go to the top of the page
+Quote Post
CuteOne
post 7.03.2011, 03:27:24
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


Szukanie po IP
  1. $ip = '83.12.322.111';
  2. $file = file('teksty.txt');
  3.  
  4. foreach($file as $list) {
  5.  
  6. $exp = explode(',', $list);
  7.  
  8. if($exp[0] != $ip) {
  9.  
  10. $write .= $list;
  11. }
  12. }
  13.  
  14. file_put_contents('teksty.txt', $write);


rozwiń to sobie

Ten post edytował CuteOne 7.03.2011, 03:27:48
Go to the top of the page
+Quote Post
Giluś
post 7.03.2011, 15:52:05
Post #3





Grupa: Zarejestrowani
Postów: 377
Pomógł: 9
Dołączył: 2.11.2010

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


Ten skrypt mi usunie linijkę mojego tekstu - tzn tam gdzie znajdzie IP identyczne do zmiennej $ip i teraz wystarczy zapisać to ?

Edit.. już wszystko sobie wyjaśniłem myślałem że muszę sobie to bardziej dostosować pod siebie..

Dzięki bardzo za ten kod

Edit2... a jak dodać 2 zmienną aby szukało dokładnie tej linii której potrzebuje po 2 - 3 zmiennych

  1. <?php
  2. $ip = '192.168.1.118';
  3. $nick = 'Devias';
  4.  
  5. $file = file('teksty.txt');
  6.  
  7. foreach($file as $list) {
  8. $exp = explode(',', $list);
  9. if($exp[0] != $ip and $exp[1] != $nick) {
  10. $write .= $list;
  11. }
  12. }
  13.  
  14. file_put_contents('teksty.txt', $write);
  15. ?>



To nie działa




Ten post edytował Giluś 7.03.2011, 16:07:43
Go to the top of the page
+Quote Post
ADeM
post 7.03.2011, 21:18:22
Post #4





Grupa: Zarejestrowani
Postów: 455
Pomógł: 69
Dołączył: 23.10.2004
Skąd: Oświęcim

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


Nie powinno tam być czasem "lub"?


--------------------
Go to the top of the page
+Quote Post
CuteOne
post 8.03.2011, 00:21:14
Post #5





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


  1. $ip = '83.12.322.111';
  2. $nick = 'nickus';
  3. $cos = 'cos';
  4.  
  5. $file = file('teksty.txt');
  6.  
  7. foreach($file as $list) {
  8.  
  9. $exp = explode(',', $list);
  10.  
  11. if($exp[0] == $ip && $exp[1] == $nick && $exp[2] == $cos) {
  12.  
  13. echo 'Linia usunięta';
  14. }
  15. else {
  16.  
  17. $write .= $list;
  18. }
  19. }
  20.  
  21. file_put_contents('teksty.txt', $write);
Go to the top of the page
+Quote Post
Giluś
post 8.03.2011, 15:45:47
Post #6





Grupa: Zarejestrowani
Postów: 377
Pomógł: 9
Dołączył: 2.11.2010

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


No dzięki wielkie, a jak sobie poradzić z takim zapisem:

  1. [Nick]
  2. UserPassword=password
  3. ServerAdmin=0 / 1


Tak jest zapisane w txt, i skrypt żeby usuwał wszystkie 3 linijki.

tak są dane zapisywane do txt.
  1. $dane = "[".$nick."]\n UserPassword=".$haslo."\n ServerAdmin=".$adm." \n";


Tzn nie żeby szukał w całym tekście UserPassword=password - bo takich wyrażeń będzie kilkanaście tylko żeby wyszukał: [".$nick."] \n UserPassword=".$haslo." \n ServerAdmin=".$adm." \n", albo podobnie, a nie że znajdzie linie z ServerAdmin=0 i usunie wszystkie z tego pliku..
Go to the top of the page
+Quote Post
crashh
post 8.03.2011, 16:03:27
Post #7





Grupa: Zarejestrowani
Postów: 9
Pomógł: 5
Dołączył: 1.07.2009

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


szukaj po nicku i kasuj linijkę z nickiem i 2 następne.
Go to the top of the page
+Quote Post
Giluś
post 8.03.2011, 16:32:43
Post #8





Grupa: Zarejestrowani
Postów: 377
Pomógł: 9
Dołączył: 2.11.2010

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


Nie mam pojęcia jak to zrobić... jak wyszukać linijkę nick - to już wiem, ale jak usunąć 2 następne linie


  1. <?php
  2. $ip = '[Marcin]';
  3. $nick = 'UserPassword=marcin';
  4. $cos = 'ServerAdmin=1';
  5.  
  6. $file = file('teksty.txt');
  7.  
  8. foreach($file as $list) {
  9.  
  10. $exp = explode('\n', $list);
  11.  
  12. if($exp[0] == $ip && $exp[1] == $nick && $exp[2] == $cos) {
  13.  
  14. echo 'Linia usunięta';
  15. }
  16. else {
  17.  
  18. $write .= $list;
  19. }
  20. }
  21.  
  22. file_put_contents('teksty.txt', $write);
  23. ?>


Próbowałem czegoś takiego, ale nie działa


Ten post edytował Giluś 8.03.2011, 16:33:54
Go to the top of the page
+Quote Post
crashh
post 8.03.2011, 16:49:00
Post #9





Grupa: Zarejestrowani
Postów: 9
Pomógł: 5
Dołączył: 1.07.2009

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


coś takiego?
szuka nicka i jednocześnie sprawdza czy nie jest w 2 lub 3 linijce po znalezionym nicku (nick to 1)
  1. <?php
  2. $nick = '[Marcin]';
  3. $file = file('teksty.txt');
  4.  
  5. $i = 1;
  6. foreach($file as $list)
  7. {
  8. if($list != $nick && $i == 1)
  9. {
  10. $write .= $list;
  11. }
  12. else
  13. {
  14. $i = ($i == 3) ? 1 : ++$i;
  15. }
  16. }
  17.  
  18. file_put_contents('teksty.txt', $write);
  19. ?>
Go to the top of the page
+Quote Post
Giluś
post 8.03.2011, 16:52:06
Post #10





Grupa: Zarejestrowani
Postów: 377
Pomógł: 9
Dołączył: 2.11.2010

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


Nie działa to zbytnio... a nawet w ogóle nie zadziałało mi to
Go to the top of the page
+Quote Post
crashh
post 8.03.2011, 19:17:28
Post #11





Grupa: Zarejestrowani
Postów: 9
Pomógł: 5
Dołączył: 1.07.2009

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


eh, małe niedopatrzenie. Dodaj znak końca linii do szukanej frazy i będzie działać.

  1. $nick = "Marcin";
  2. $search = "[$nick]\n";


i szukaj $search zamiast $nick
  1. if($list != $search && $i == 1)
Go to the top of the page
+Quote Post
Giluś
post 8.03.2011, 19:22:22
Post #12





Grupa: Zarejestrowani
Postów: 377
Pomógł: 9
Dołączył: 2.11.2010

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


  1. <?php
  2. $nick = "Marcin";
  3. $search = "[$nick]\n";
  4.  
  5. $file = file('teksty.txt');
  6.  
  7. $i = 1;
  8. foreach($file as $list)
  9. {
  10. if($list != $search && $i == 1)
  11. {
  12. $write .= $list;
  13. }
  14. else
  15. {
  16. $i = ($i == 3) ? 1 : ++$i;
  17. }
  18. }
  19.  
  20. file_put_contents('teksty.txt', $write);
  21. ?>


Jeśli tak ma to wyglądać to mi nadal nie śmiga... a zawartość pliku teksty.txt to
[Marcin]
UserPassword=marcin
ServerAdmin=1
[kol]
UserPassword=lol
ServerAdmin=0
[lol]
UserPassword=kolo
ServerAdmin=1

Ten post edytował Giluś 8.03.2011, 19:22:44
Go to the top of the page
+Quote Post
crashh
post 9.03.2011, 00:02:40
Post #13





Grupa: Zarejestrowani
Postów: 9
Pomógł: 5
Dołączył: 1.07.2009

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


W takim razie
  1. $search = "[$nick]";

  1. if(trim($list) != $search && $i == 1)
Go to the top of the page
+Quote Post
Giluś
post 10.03.2011, 20:05:34
Post #14





Grupa: Zarejestrowani
Postów: 377
Pomógł: 9
Dołączył: 2.11.2010

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


Dzięki wielkie, leci plusik smile.gif
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: 18.07.2025 - 01:39