Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Includowanie wybranych linii z pliku txt oraz zapisywanie w wybranych liniach
Forum PHP.pl > Forum > Przedszkole
janekpogwad
Witam,
pozwolę sobie zadać 2 pytania w jedynym temacie, ponieważ są spokrewnione ze sobą.

Otóż:

  • Jak można (i czy w ogóle jest to możliwe) includować wybrane linie pliku?
  • Jak można zapisywać dane w pliku txt, w wybranych liniach pliku?


Liczę na odpowiedź smile.gif
Berg
file - wczytujesz wszystko do tablicy gdzie kolejny element to nowa linia wczytanego pliku winksmiley.jpg
Pawel_W
Cytat(Berg @ 16.08.2009, 17:39:40 ) *
file - wczytujesz wszystko do tablicy gdzie kolejny element to nowa linia wczytanego pliku winksmiley.jpg

includowanie a pobieranie do zmiennej to 2 różne rzeczy winksmiley.jpg

nie rozumiem tylko do czego Ci to potrzebne? nie lepiej zapisać te pare linijek do funkcji, a potem includować cały plik i wywoływać tylko tą funkcję?

co do 2 to musisz odpowiednio sformatować string używając "\n" i "\r"
Berg
No tak ale jeśli wie którą linię chce includować to odczytuje wartość z tablicy, wywala znak nowej linii z końca i może includować winksmiley.jpg
Pawel_W
tak?

to spróbuj z czymś takim:
  1. <?php
  2. $text = 'echo "aaaa"';
  3. include($text);
  4. ?>

i napisz mi co widzisz haha.gif
janekpogwad
Przypominam, że piszecie w PRZEDSZKOLU i ja z tego praktycznie nic nie rozumiem. Przykłady, ludzie, przykłady! Wtedy sobie mogę jakoś przerobić skrypt.

Co do drugiego to mamy załóżmy taki plik:

  1. <?php
  2.  
  3. echo('test');
  4. echo('<br />test2');
  5.  
  6. ?>


I jak chce zapisać

  1. echo('<br />test3');


dokładnie w linii 5 (czyli zaraz po test2). Czy jest to realne? Jak tak, to poproszę o przykłady lub wskazówki.
ultra_18
1 pytanie:
Pobierasz text funkcja file() i pozniej go wykonujesz funkcja eval()

np: chcesz wykonac 2 i 13 linie kodu:

  1. $zawartosc = file('plik.txt');
  2.  
  3. eval($zawartosc[1]);
  4. eval($zawartosc[12]);


2 pytanie:
wczytujesz caly plik , później modyfikujesz ten wczytany text dopisujac linijki tam gdzie chcesz i nadpisujesz stary plik
Berg
Chodziło mi raczej o pliki txt w stylu
  1. /baza/plik_1.php
  2. /baza/plik_2/php
  3. /baza/plik_3.php
winksmiley.jpg
Pawel_W
1. Pobierasz cały plik do tablicy - file
2. Definiujesz zmienną, żeby nie było błędów ($jakas_zmienna = '');
3. W pętli for($i=0,$c=count($jakas_tablica_z_funkcji_file);$i<$c;$i++) dodajesz do ciągu kolejne linijki
4. Jeżeli $i + 1 = linijka do której chcesz coś wklepać to to wklepujesz haha.gif
5. Zapisujesz - file_put_contents

myślę, że wyraziłem się jasno biggrin.gif

Cytat(ultra_18 @ 16.08.2009, 17:59:18 ) *
1 pytanie:
Pobierasz text funkcja file() i pozniej go wykonujesz funkcja eval()

np: chcesz wykonac 2 i 13 linie kodu:

  1. $zawartosc = file('plik.txt');
  2.  
  3. eval($zawartosc[1]);
  4. eval($zawartosc[12]);


2 pytanie:
wczytujesz caly plik , później modyfikujesz ten wczytany text dopisujac linijki tam gdzie chcesz i nadpisujesz stary plik

ludzie, ludzie to nie jest takie eval jak w javascript, może najpierw sprawdź a potem pisz haha.gif
Fifi209
Paweł a dlaczego miałoby nie działać ?

  1. <?php
  2.  
  3. $test = 'echo \'a\';';
  4.  
  5. eval($test);
  6.  
  7. ?>


Spróbuj, 99% że zadziała.
Pawel_W
sorry, moja wina, średnika po echo nie postawiłem winksmiley.jpg w takim razie wszystko ok
Berg
eval w PHP, eval w JS. Zasada działania imo podobna tongue.gif
janekpogwad
ultra_18, pomogło i działa! Dzięki!

Pawel_W, co z tego, że nie to samo eval, jak mi działa? O co to chodzi? O standardy? Jeśli tak, to ja ja jestem daleko za murzynami, bo wszystko trzymam w plikach txt. Gdyby to było w bazie, to by w ogóle problemu nie było, nie? Tabele i koniec w MySQL... No ale ja tego jeszcze nie pojąłem moim mózgiem. winksmiley.jpg
Pawel_W
bardziej mi chodziło o to, że wyskoczył mi błąd (przez brakujący średnik jak się później okazało), a że nie znalazłem w manualu informacji o działaniu podobnym do include, więc stwierdziłem, że metoda jest niepoprawna winksmiley.jpg jeszcze raz przepraszam, że tak namieszałem winksmiley.jpg
janekpogwad
Cytat(Pawel_W @ 16.08.2009, 18:03:09 ) *
1. Pobierasz cały plik do tablicy - file
2. Definiujesz zmienną, żeby nie było błędów ($jakas_zmienna = '');
3. W pętli for($i=0,$c=count($jakas_tablica_z_funkcji_file);$i<$c;$i++) dodajesz do ciągu kolejne linijki
4. Jeżeli $i + 1 = linijka do której chcesz coś wklepać to to wklepujesz haha.gif
5. Zapisujesz - file_put_contents

myślę, że wyraziłem się jasno biggrin.gif


A to Paweł ma być to "zapisywanie w wybranych liniach"? Poproszę jednak o przykład, muszę się tego jakoś nauczyć, tak, jak kiedyś się nauczyłem echo(). winksmiley.jpg
Pawel_W
  1. $plik = file('jakis_plik.txt'); // punkt 1
  2. $linia = 10; // linia 10
  3.  
  4. $string = ''; // punkt 2
  5. for($i=0,$c=count($plik);$i<$c;$i++) // punkt 3
  6. {
  7. if($i+1 == $linia)
  8. $plik[$i] = 'jakis_tekst_do_podmiany'; // punkt 4
  9.  
  10. $string.=trim($plik[$i])."\n\r";
  11. }
  12. file_put_content('jakis_plik.txt', $string) // punkt 5


tyle
janekpogwad
Już prawie dobrze, ale... to podmienia, a ja chce, żeby:

1. odszukaj linię 5
2. daj enter i napisz "ble-ble"
3. zamknij plik - koniec algorytmu

i za każdym razem rozpoczynało od linii 5, co skutkowałoby, że starsze wpisy zostałyby. \n jakoś dziwnie nie działa sad.gif
Fifi209
Bo musisz dać w cudzysłowach to po pierwsze a po drugie \n\r (dla windows)
janekpogwad
Jest w cudzysłowach, mam Linux, ale też pod nim to działało. No dobra, a pod Linuxem co ma niby być, bo tutaj się kompletne jaja robią. Podmienia, robić przerwy gdzie nie trzeba. Ja chce tak, jak napisałem, przed Twoim, fifi, postem.
Fifi209
Wczytaj przez file i będziesz miał w tekst w tablicy.
jedna wartość w tablicy odpowiada jednej linii w pliku.

Tak więc jeżeli znasz linię...

Odczytaj plik, pierwsze 4 linie przepisz bez zmian, potem dopisz swoją i na końcu resztę.
janekpogwad
Dałbyś przykład?
Fifi209
  1. <?php
  2.  
  3. $tekst = file('test.txt');
  4.  
  5. $nowy = '';
  6.  
  7. for ($i=0; $i < 4; $i++) {
  8. $nowy .= $tekst[$i];
  9. }
  10.  
  11. $nowy .= "Nowa linia\n";
  12.  
  13. for ($i=4; $i < count($tekst); $i++) {
  14. $nowy .= $tekst[$i];
  15. }
  16.  
  17. echo $nowy;
  18.  
  19. ?>


Zapisywania nie chciało mi się robić. winksmiley.jpg
janekpogwad
Jest, działa!!! WIELKIE DZIĘKI, FIFI!!! NAPRAWDĘ BARDZO DZIĘKUJĘ!!! yahoo.gif yahoo.gif yahoo.gif
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.