Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Usuniecie kilku linijek
JamalBIG
post 19.10.2008, 17:24:50
Post #1





Grupa: Zarejestrowani
Postów: 496
Pomógł: 1
Dołączył: 16.01.2008
Skąd: Świnoujście

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


Witam

Mam taki oto kod usuwajacy mi linijki tekstu z pliku:
  1. <?php
  2. $od = 1;
  3. $do = 61;
  4.    $str = file($str);
  5.       for($od; $od <= $do; $od++){
  6.           $str[$od-1] = "";
  7.       }
  8.       $str = implode("",$str);
  9.       echo $str;
  10. ?>

W jaki sposob moge oprocz tych pierwszych 61 linijek usunac dodatkowo linijki od 68 do 70 tak zeby wszystko sie dzialo w jednym kodzie, bo mozna zapisac ten pierwszy wynik do pliku i ponownie wykonac kod tylko z innymi zmiennymi $od $do ale chcialbym tego uniknac...
Go to the top of the page
+Quote Post
Spawnm
post 19.10.2008, 17:29:03
Post #2





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




np:
  1. <?php
  2. $str = file($str);
  3. for($x=68;$x<=70;$x++){
  4. $str[$x]='';
  5. }
  6. ?>
Go to the top of the page
+Quote Post
michalkjp
post 19.10.2008, 17:32:58
Post #3





Grupa: Zarejestrowani
Postów: 182
Pomógł: 14
Dołączył: 20.09.2008

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


Proponuję zrobić sobie tablicę od_do w postaci { od => do, 1 => 63, 74 => 86} następnie foreach ($tablica as $od=>$do) {} i w tej pętli umieścić pętlę for.
Go to the top of the page
+Quote Post
JamalBIG
post 19.10.2008, 17:49:18
Post #4





Grupa: Zarejestrowani
Postów: 496
Pomógł: 1
Dołączył: 16.01.2008
Skąd: Świnoujście

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


Mam jakis problem bo widze ze kod 'cos' robi ale problem polega na tym ze to 'cos' to zmiana znakow a nie usuwanie wierszy bo wyswietla mi sie cos takiego:
Kod
<table cellspac��g=1 cel....
Go to the top of the page
+Quote Post
marcio
post 19.10.2008, 18:35:07
Post #5





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


  1. <?php
  2. $file = 'plik.txt';
  3. $tab = array('od' => 1, 'do' => 61, 'od_nr' => 68, 'do_nr' => 70);
  4. $str = file($file);
  5. $lines = explode('\n', $str);
  6.  
  7. for($y = 0; $y < count($lines); $y++) if($lines[$i] == $tab['od_nr'] && $lines[$i] == $tab['do_nr']) unset($str[$tab['od_nr']]);
  8.  
  9. for($i = $tab['od']; $i <= $tab['do']; $i++) $str[$i] = "";
  10.  
  11. $str = implode("",$str);
  12. $fp = fopen($file , "w");
  13. flock($fp,2);
  14. fputs($fp , $str);
  15. flock($fp,3);
  16. fclose($fp);
  17.  
  18.  
  19. ?>

Cos w ten desen watpie ze bedzie dzialac ale chyba tak musisz kombinowac najpierw usun linie od 68 do 70 bo jak usuniesz do 61 to tamte linie zmienia pozycje

Ten post edytował marcio 19.10.2008, 18:37:07


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
michalkjp
post 19.10.2008, 18:52:38
Post #6





Grupa: Zarejestrowani
Postów: 182
Pomógł: 14
Dołączył: 20.09.2008

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


@marcio
Przekombinowałeś, chodziło mi o coś prostego w stylu:

  1. <?php
  2. $od_do = array('1' => 60, '70' => 85);
  3.  
  4. $str = file($str);
  5.  
  6. foreach ($od_do as $od=>$do) {
  7.    for ($i = $od; $i <= $do; $i++) {
  8.        $str[$od-1] = "";
  9.    }
  10. }
  11.  
  12. $str = implode("",$str);
  13. echo $str;
  14. ?>

Nie testowałem, więc może nie działać jak trzeba, ale nie chodziło mi o danie gotowego kodu, tylko o pokazanie idei jak coś takiego można prosto zrobić.
Go to the top of the page
+Quote Post
JamalBIG
post 19.10.2008, 19:04:14
Post #7





Grupa: Zarejestrowani
Postów: 496
Pomógł: 1
Dołączył: 16.01.2008
Skąd: Świnoujście

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


Dzieki wielkie, nawet nie wiedzialem ze to bedzie tak wygladac... Kod nie usuwal pierwszych lini 68 - 70 ale wystarczylo skopiowac i dostosowac jedna linie, tu jest poprawiony kod:
  1. <?php
  2. $file = "wynik.txt";
  3. $tab = array('od' => 0, 'do' => 60, 'od_nr' => 75, 'do_nr' => 79);
  4. $str = file($file);
  5. $lines = explode('\n', $str);
  6.  
  7. #for($y = 0; $y < count($lines); $y++) if($lines[$i] == $tab['od_nr'] && $lines[$i] == $tab['do_nr']) unset($str[$tab['od_nr']]);
  8. for($i = $tab['od_nr']; $i <= $tab['do_nr']; $i++) $str[$i] = "";
  9.  
  10. for($i = $tab['od']; $i <= $tab['do']; $i++) $str[$i] = "";
  11.  
  12. $str = implode("",$str);
  13. echo "$str";
  14. ?>


Pozdrawiam
I jeszcze raz wielkie dzieki
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: 31.07.2025 - 08:02