[PHP] Jak wypisać w tabeli zawartość pliku tekstowego z polami oddzielonymi separatorem?

0x01 graphic

Chcesz na podstawie pliku tekstowego z danymi w osobnych liniach oddzielonych separatorem utworzyć tabelę HTML.

0x01 graphic

Takie zastosowanie plików txt jest szalenie często wykorzystywane w praktyce i bardzo przydatne. W pliku tekstowym możesz umieścić surowe dane i na podstawie takiego pliku wygenerować dowolną treść strony WWW umieszczając dane np. w tabeli.

W ten sposób plik tekstowy jest niewielki objętościowo, można go łatwo edytować, a wynikowe dane możesz przedstawić w dowolnej postaci, bez wcześniejszego formatowania ich w pliku.

Stwórzmy plik tekstowy o nazwie plik.txt. Umieścimy w nim imiona, nazwiska i wiek kilku osób. Równie dobrze mogą to być inne pola (np. newsy). Ważne aby każdy rekord znajdował się w osobnej linijce, a linijka składała się z pól oddzielonych jakimś znakiem, który nie występuje w tekscie.

`Jan`Kowalski`23`

`Piotr`Winnicki`25`

`Izabela`Nowak`19`

`Zuza`Zuzkowska`33`

Zawartość pliku można łatwo zamienić w elegancką tabelę:

Imię

Nazwisko

Wiek

Jan

Kowalski

23

Piotr

Winnicki

25

Izabela

Nowak

19

Zuza

Zuzkowska

33

Aby osiągnąć taki rezultat zastosuj poniższy skrypt:

<?

$dane = file("plik.txt");

echo "<table border=1><tr><td><b>Imię</b></td>

<td><b>Nazwisko</b></td><td><b>Wiek</b></td></tr>";

foreach ($dane as $linia) {

$l = explode("`", $linia);

echo "<tr><td>$l[1]</td><td>$l[2]</td><td>$l[3]</td></tr>";

}

echo "</table>";

?>

Funkcja file() wczytuje zawartość podanego pliku do tablicy $dane. W pętli foreach każda linijka tablicy rozbijana jest w funkcji explode() na poszczególne elementy rozdzielone podanym znakiem. W tablicy $l znajdują się poszczególne pola i można się do nich odwołać za pomocą indeksu.

Ponieważ znak separujący pola znajduje się już na początku linii, więc numeracja właściwych danych w tablicy $l zaczyna się od 1. Zerowy indeks przechowuje pusty łańcuch znaków.

Wypisujemy w pętli poszczególne indeksy dla każdego wiersza tabeli. W ten sposób tabela wypełni się danymi z pliku. Oczywiście można umieścić dodatkowy nagłówek. Nie ma też problemu z ustaleniem innej kolejności danych w tablicy - wystarczy tylko wypisać indeksy tablicy $l w innym porządku.