Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Operacje na plikach tekstowych - Pomocy, Wyświetlanie tekstu na stronie przez php
Giluś
post
Post #1





Grupa: Zarejestrowani
Postów: 377
Pomógł: 9
Dołączył: 2.11.2010

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


Cześć chciałbym pobrać dane z pliku tekstowego, a następnie wyświetlić je na stronie w pętli - zrobiłem taki skrypt tylko ze nie wyświetla mi wszystkiego...

  1. <?php
  2. $file = file('teksty.txt');
  3.  
  4. foreach($file as $list) {
  5.  
  6. $exp = explode('\n', $list);
  7.  
  8. Jedna Linia: ".$exp[0]."<br />
  9. Druga Linia: ".$exp[1]."<br />
  10. Trzecia Linia: ".$exp[2]."<br />
  11. <br />
  12. ";
  13. }
  14. ?>


Plik teksty.txt

  1. [Tekst]
  2. UserPassword=lol
  3. ServerAdmin=0
  4. [Lol]
  5. UserPassword=kolo
  6. ServerAdmin=1


Na stronie wyświetla mi się tak:
  1. Jedna Linia: [Tekst]
  2. Druga Linia:
  3. Trzecia Linia:
  4.  
  5. Jedna Linia: UserPassword=lol
  6. Druga Linia:
  7. Trzecia Linia:
  8.  
  9. Jedna Linia: ServerAdmin=0
  10. Druga Linia:
  11. Trzecia Linia:
  12.  
  13. Jedna Linia: [Lol]
  14. Druga Linia:
  15. Trzecia Linia:
  16.  
  17. Jedna Linia: UserPassword=kolo
  18. Druga Linia:
  19. Trzecia Linia:
  20.  
  21. Jedna Linia: ServerAdmin=1
  22. Druga Linia:
  23. Trzecia Linia:



Nie wiem jak oddzielić linie bo raczej tutaj \n nie działa mi za dobrze ( chyba )





Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
zordon
post
Post #2





Grupa: Zarejestrowani
Postów: 358
Pomógł: 78
Dołączył: 4.11.2008
Skąd: Kraków

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


zamiast "\n" użyj stałej php PHP_EOL - na różnych systemach zawsze działa dobrze
... chyba, że to w pliku masz złe znaki nowej linii. Jak powyższe nie zadziała, przejedź każdy znak w stringu (przed explode) funkcją ord żeby zidentyfikować te znaki. Potem masz już z górki (IMG:style_emoticons/default/smile.gif)

Ten post edytował zordon 10.03.2011, 16:45:34
Go to the top of the page
+Quote Post
Crozin
post
Post #3





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Popatrz co w ogóle zwraca file i włącz sobie raportowanie wsztstkich błędów.
Go to the top of the page
+Quote Post
Giluś
post
Post #4





Grupa: Zarejestrowani
Postów: 377
Pomógł: 9
Dołączył: 2.11.2010

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


Z moich przypuszczeń nie działa
  1. Druga Linia: ".$exp[1]."<br />
  2. Trzecia Linia: ".$exp[2]."<br />


ani exp[1], ani exp[2], tylko działa exp[0] i wyświetlane są tam wszystkie linie

Edit: jak zmienię w linii drugiej i trzeciej na exp[0] to wyświetla się takie coś:


  1. Jedna Linia: [Tekst]
  2. Druga Linia: [Tekst]
  3. Trzecia Linia: [Tekst]
  4.  
  5. Jedna Linia: UserPassword=lol
  6. Druga Linia: UserPassword=lol
  7. Trzecia Linia: UserPassword=lol
  8.  
  9. Jedna Linia: ServerAdmin=0
  10. Druga Linia: ServerAdmin=0
  11. Trzecia Linia: ServerAdmin=0
  12.  
  13. Jedna Linia: [Lol]
  14. Druga Linia: [Lol]
  15. Trzecia Linia: [Lol]
  16.  
  17. Jedna Linia: UserPassword=kolo
  18. Druga Linia: UserPassword=kolo
  19. Trzecia Linia: UserPassword=kolo
  20.  
  21. Jedna Linia: ServerAdmin=1
  22. Druga Linia: ServerAdmin=1
  23. Trzecia Linia: ServerAdmin=1



Edit:

Gdy użyje kodu :
  1. <?php
  2. $file = file('teksty.txt');
  3.  
  4.  
  5.  
  6. foreach($file as $list) {
  7.  
  8. echo "".$list."";
  9.  
  10. }
  11. ?>


Otrzymuje odpowiedz w przeglądarce:

  1. [Tekst] UserPassword=lol ServerAdmin=0 [Lol] UserPassword=kolo ServerAdmin=1


Gdy daje takie coś to wyświetla mi się normalnie tekst tak jak powinien tylko ja chce aby można było rozdzielić 1, 2, 3 linie - za bardzo nie wiem jak to zrobić

  1. $file = file('teksty.txt');
  2.  
  3. foreach($file as $list) {
  4.  
  5. $exp = explode('\n', $list);
  6.  
  7. Jedna Linia: ".$exp[0]."<br />
  8. <br />
  9. ";
  10. }


Ten post edytował Giluś 10.03.2011, 17:26:49
Go to the top of the page
+Quote Post
Valdi_B
post
Post #5





Grupa: Zarejestrowani
Postów: 107
Pomógł: 30
Dołączył: 19.02.2011
Skąd: Warszawa

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


Funkcja file(...) daje w wyniku tablicę.
Elementami tej tablicy są kolejne linie tekstu z tego pliku.
Dlatego funkcja explode('\n', $list); ("cięcie na kawałki" znakiem \n) nie ma sensu.
Cały wiersz będzie w elemencie 0, a pozostałe elementy:
- na początku w ogóle ich nie ma,
- są one tworzone (z pustą treścią) dopiero w momencie gdy próbujesz odczytać ich treść.

A może kolejne wiersze powinieneś dzielić na części np. wg znaku "=" (to co przed / to co po)?
A nawet jeżeli tak, to co chciałeś uzyskać w "trzecim fragmencie" ($exp[2])?
Go to the top of the page
+Quote Post
Giluś
post
Post #6





Grupa: Zarejestrowani
Postów: 377
Pomógł: 9
Dołączył: 2.11.2010

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


Chciałem zrobić takie coś, wczytuje plik teksty.txt i robię pętle aby mi się powtarzały kolejne linijki z pliku teksty.txt

[Lol] - to bym chciał aby było - $exp[0]
UserPassword=kolo - to aby było - $exp[1]
ServerAdmin=1 - a to natomiast - $exp[2]

Jeszcze w między czasie chciałbym aby nie pokazywało mi na stronie nawiasów kwadratowych " [ ] ", oraz " UserPassword= " i "ServerAdmin= "

Ten post edytował Giluś 10.03.2011, 21:05:30
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: 25.08.2025 - 08:02