Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Usuniecie kilku linijek
Forum PHP.pl > Forum > Przedszkole
JamalBIG
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...
Spawnm
np:
  1. <?php
  2. $str = file($str);
  3. for($x=68;$x<=70;$x++){
  4. $str[$x]='';
  5. }
  6. ?>
michalkjp
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.
JamalBIG
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....
marcio
  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
michalkjp
@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ć.
JamalBIG
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
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.