Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyszukanie w pliku odpowiedniej linijki i modyfikacja jej ( lub usunięcie )
Forum PHP.pl > Forum > PHP
Giluś
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... ?
CuteOne
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
Giluś
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


ADeM
Nie powinno tam być czasem "lub"?
CuteOne
  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);
Giluś
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..
crashh
szukaj po nicku i kasuj linijkę z nickiem i 2 następne.
Giluś
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
crashh
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. ?>
Giluś
Nie działa to zbytnio... a nawet w ogóle nie zadziałało mi to
crashh
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)
Giluś
  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
crashh
W takim razie
  1. $search = "[$nick]";

  1. if(trim($list) != $search && $i == 1)
Giluś
Dzięki wielkie, leci plusik smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.