Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]kasowanie pasującej do stringa linii
Forum PHP.pl > Forum > Przedszkole
canismajoris
Witam prosze o pomoc czym/jak mogę wykasowac linię z pasującym stringiem?

plik txt


kot czarny
pies czerwony
mysz biała
szczur szary
kot rózowy
kot bury


chciałbym wykasować całą linię w której wystepuje wyraz "szczur"
nie moge jednak zrobic tego po numerze linii, a po stringu.
z góry dzięki.

vonski
Wrzuć sobie zawartość tego pliku do tablicy (file), wtedy każda linia z pliku będzie elementem tablicy. Przeszukaj tablicę czy występuje w niej szukany wyraz (np. strpos) i jeśli tak, usuń ten element unset.
canismajoris

  1. $plik=file("plik1.txt");
  2.  
  3. foreach ($plik as $l => $val) {
  4. if (!preg_match('/szczur/',$val)) {
  5. $fp=fopen("plik2.txt","a");
  6. fwrite($fp,$val);
  7. fclose($fp);
  8. echo $val;
  9. }}


działa ale musze zapisywać to w innym pliku. jak daje ten sam plik to mi dopisuje, jak dam znacznik "w" to kasuje plik, ale wywala jedną ostatnia linie tylko.
jak to poprawć aby wynik się zapisywał do tego samego pliku?

z unset nie działa, pewnie coś namieszalem.
vonski
Spróbuj tak:

  1. $file = file('plik.txt');
  2.  
  3. foreach($file as $key => $val) {
  4. if(strpos($val, 'szczur') !== false) {
  5. unset($file[$key]);
  6. }
  7. }
  8.  
  9. file_put_contents('plik.txt', $file);
nospor
nie: file_put_contents('plik.txt', $file);
a: file_put_contents('plik.txt', implode("\n",$file);
ewentualnie: a: file_put_contents('plik.txt', implode("",$file);

edit: a nie, widze ze file_put_contents przyjmuje też tablice. Sorki. smile.gif
vonski
Cytat
ewentualnie: a: file_put_contents('plik.txt', implode("",$file);



manual:
Cytat
You can also specify the data parameter as a single dimension array. This is equivalent to file_put_contents($filename, implode('', $array)).


edit:
nie widziałem Twojego edita smile.gif
canismajoris
  1. $plik40=file("../tab/4444.txt");
  2. if (isset($ide61)) {
  3. foreach ($plik40 as $linia40 => $value40 ) {
  4. $zm77=explode(";",$value40);
  5. $zm78="{$zm77[0]}";
  6. $zm79="{$zm77[1]}";
  7. if ( $zm78 == $ide61 && $zm79 == $data61) {
  8. unset($plik40[$linia40]);
  9. }}}
  10. file_put_contents("../tab/4444.txt",$plik40);


działa pieknie, pieknie dziękuję oczywiście plus vonski.
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.