Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Wskaźnik pliku, w wybranej pozycji
Forum PHP.pl > Forum > Przedszkole
Coolmax
Ach te pliki. Mam problem, czytałem o file, fopen, fseek, fgets, ..., ale nadal nie mogę znaleźć rozwiązania na mój problem. I zastanawiam co było by bardziej użyteczne tablice czy stringi. Czego mam użyć, aby zapisać do pliku tekst, po wybranej (znanej mi) linii, a czego, gdy znam ciąg znaków w poprzedzającej linii. Zależy mi głów. na tym drugim przypadku i przypuszczam, że trzeba załadować cały plik, wyszukać tą frazę i tam umieścić wskaźnik pliku - ale jak?
piotrekkr
hmm nie lepiej zaladowac zawartosc pliku do zmiennej i ja przeszukac w poszukiwaniu ciagu znakow i pozniej rozbic zmienna i miedzy rozbite czesci wsadzic nowa zawartosc i pozniej zapisac calosc do pliku??
Coolmax
W sumie tak bo twoim, albo tym co ja chciałem sposobem i tak trzeba załadowac cały plik. No chyba, że jest funkcja, która czyta plik dotąd, aż znajdzie podaną frazę, ale z takim czymś się jeszcze nie spotkałem...
piotrekkr
no ja tez jeszcze sie nie spotkalem biggrin.gif poczytaj o funkcjach operujacych na stringach
Gość
Uwazaj tylko by zmienna nie zajela zbyt duzo bo moze nastapic przeladowanie pamieci i skrypt sie wysypie.
Coolmax
A gdzie mogę znaleźć o wielkości zmiennej? Aktualnie plik ma 4133 B, ale może być większy.
piotrekkr
jesli chodzi o dlugosc stringa to strlen() a o plik to chyba filesize()
em1X
jezeli chodzi o zapisanie do pliku wybranej linii (i jezeli te pliki nie przekraczaja rozmiarow powiedzmy 1mb to raczej nie bedzie klopotu)

  1. <?php
  2. function writeLineToFile($filehandle, $filename, $linenum)
  3. {
  4.  if (is_resource($filehandle))
  5.  {
  6. $arr = &file($filename);
  7. fwrite($filehandle, $arr[$linenum]);
  8. unset($arr);
  9.  
  10. return true;
  11.  }
  12.  
  13.  return false;
  14. }
  15.  
  16. // use-case
  17. $fp = fopen("plikDoZapisu.txt", "w");
  18.  
  19. if (writeLineToFile($fp, "odczyt.txt", 10))
  20. {
  21.  echo "Zapisałem do pliku wybraną linię";
  22. }
  23. else echo "Coś się nie udało...";
  24.  
  25. fclose($fp);
  26. ?>


a w przypadku znania tekstu poprzedzającej linii:
  1. <?php
  2. function getLine($file, $txt)
  3. {
  4. $arr = &file($file);
  5. $count = count($arr);
  6. $return = '';
  7.  
  8. for ($i=0; $i<$count; $i++)
  9. {
  10. if (eregi($txt, $arr[$i]))
  11. {
  12. $return = $arr[++$i];
  13. break;
  14. }
  15. }
  16.  
  17. unset($arr);
  18. return $return;
  19. }
  20.  
  21. // plik read.txt:
  22. /*
  23. ala miala
  24. kota a ten
  25. kot mial aids
  26. a poniewaz go kochala
  27. do uspenia oddala
  28. */
  29.  
  30. $fp = fopen('zapis.txt', 'w');
  31. fwrite($fp, getLine('read.txt', 'kota'));
  32. fclose($fp);
  33. ?>
Coolmax
W tym drugim kodzie raczej nie widzę, gdzie mógłbym zapisać, tekst, bo "kota" uzywasz chyba do znalezienia miejsca, a jak dodać tekst? Mogę tego kodu bezpiecznie używać na jednym pliku np. "read.txt"?
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.