Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]kasowanie pasującej do stringa linii
canismajoris
post
Post #1





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 11.01.2012

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


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.

Go to the top of the page
+Quote Post
vonski
post
Post #2





Grupa: Zarejestrowani
Postów: 292
Pomógł: 89
Dołączył: 27.12.2006
Skąd: Warszawa

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


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.
Go to the top of the page
+Quote Post
canismajoris
post
Post #3





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 11.01.2012

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



  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.
Go to the top of the page
+Quote Post
vonski
post
Post #4





Grupa: Zarejestrowani
Postów: 292
Pomógł: 89
Dołączył: 27.12.2006
Skąd: Warszawa

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


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);
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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. (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
vonski
post
Post #6





Grupa: Zarejestrowani
Postów: 292
Pomógł: 89
Dołączył: 27.12.2006
Skąd: Warszawa

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


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 (IMG:style_emoticons/default/smile.gif)

Ten post edytował vonski 1.03.2012, 14:33:38
Go to the top of the page
+Quote Post
canismajoris
post
Post #7





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 11.01.2012

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


  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.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 27.08.2025 - 18:40