Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Wczytanie danych z pliku tekstowego
Forum PHP.pl > Forum > Przedszkole
Lukas83
Chciałbym wczytać dane z pliku tekstowego o "aa.txt". Plik "aa.txt" przedstawia się następująco:
Kod
   tytul=Jakiś Tytuł
       rodzaj=klasyka
       rodzaj=planszowa
       rodzaj=strategiczna
       jezyk=polski
       jezyk=angielski

Z tego co dowiedziałem się z kursu to "Funkcja file($nazwa_pliku) zwraca tablicę, w której każdy element jest osobnym wierszem z pliku, którego nazwa jest podana w parametrze.", a więc:
Kod
     $plik = implode('', file('nazwa_pliku'));

Tylko zupełnie nie wiem jak to zastosować z podanego przezemnie pliku tekstowego. Chciałbym, aby zmienne zostały przypisane w taki sposób, aby efektem wczytania danych z tego pliku było coś takiego w kodzie html:
Kod
<b>Jakiś tytuł</b></br><b>Rodzaj gry:</b> klasyka, planszowa, strategiczna.</br><b>Język gry:</b>polski, angielski.

Prosiłbym o nakierowanie mnie w jaki sposób uzyskać taki efekt.
phpion
Cytat(Lukas83 @ 10.09.2007, 15:39:10 ) *
Prosiłbym o nakierowanie mnie w jaki sposób uzyskać taki efekt.

Więc ja bym to widział tak. Wczytujesz plik do tablicy dzięki file()" title="Zobacz w manualu PHP" target="_manual. Następnie robisz pętle foreach na utworzonej tablicy i każdy element przelatujesz funkcją explode()" title="Zobacz w manualu PHP" target="_manual jako separator podając '='. Dostaniesz wtedy tablicę dwóch elementów: $tab[0] to nazwa 'grupy' danych (np. tytul, rodzaj, jezyk) oraz $tab[1] będący wartością. Robisz przypisanie do tablicy (wcześniej ją utwórz jako pustą $data = array()) poprzez $data[$tab[0]][] = $tab[1] w wyniku czego otrzymasz tablicę asocjacyjną postaci:
  1. <?php
  2. $data['tytul'] = array(
  3. 0 => 'Jakis tytul'
  4. );
  5. $data['rodzaj'] = array(
  6. 0 => 'klasyka',
  7. 1 => 'planszowa',
  8. 2 => 'strategiczna'
  9. );
  10. $data['jezyk'] = array(
  11. 0 => 'polski',
  12. 1 => 'angielski'
  13. );
  14. ?>

Możesz teraz wyświetlić dane na podstawie tej struktury używając:
  1. <?php
  2. echo '<b>'.$data['tytul'][0].'</b><br><b>Rodzaj gry:</b> '.implode(', ', $data['rodzaj']).'<br><b>Jezyk gry:</b> '.implode(', ', $data['jezyk']);
  3. ?>

I po herbacie. Mam nadzieję, że jasno opisałem mój sposób rozwiązania problemu i że nigdzie się nie machnąłem winksmiley.jpg
Lukas83
Rozumiem mniej więcej (raczej mniej winksmiley.jpg ) o co chodzi, ale nie jestem pewien w jaki sposób uzyskać końcowy wynik. Kod początkowy przedstawia się tak:

Kod
$plik = file($_GET['gra'] . '.txt'); //tutaj otwieram swój plik w zależności od parametru

while($linia = fgets($f, 4096))
{
$dane[$i] = explode("=", $linia);
$i++;
}


Zacząłem mniej więcej w ten sposób, ale nie jestem pewien, bo jestem zupełnie początkujący w tych sprawach. Wiem jak z tablicy odczytać dane i je wyświetlić, ale wciąż tkwie w problemie jak te dane wcielić do tabeli. Proszę o pomoc.
phpion
Nie sprawdzałem ale powinno być ok
  1. <?php
  2. $data = array();
  3.  
  4. $file = file('plik.txt');
  5.  
  6. foreach ($file as $line) {
  7. $line = trim(chop($line));
  8.  
  9. $explode = explode('=', $line);
  10.  
  11. if (!isset($data[$explode[0]]) || !is_array($data[$explode[0]])) {
  12. $data[$explode[0]] = array();
  13. }
  14.  
  15. array_push($data[$explode[0]], $explode[1]);
  16. }
  17.  
  18. echo '<b>'.$data['tytul'][0].'</b><br><b>Rodzaj gry:</b> '.implode(', ', $data['rodzaj']).'<br><b>Jezyk gry:</b> '.implode(', ', $data['jezyk']);
  19. ?>
Lukas83
Dzięki. O to właśnie mi chodziło. Pozdrawiam. snitch.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.