[PHP] Jak rozbić na poszczególne pola linijkę z danymi rozdzielonymi dowolnym znakiem, np. "|" lub "`"?
Chcesz rozbić na poszczególne pola linijkę z danymi, które rozdzielone są jakimś znakiem, aby pobrać dowolne z tych pól.
W tekstowych bazach danych informacje przechowywane są zazwyczaj w postaci linijek tekstu, zawierających różne wartości oddzielone między sobą jakimś znakiem. Często tym znakiem jest "|", choć może to być dowolny inny znak, który nie jest spotykany w zwykłym tekscie.
Dla przykładowej bazy zawierającej imię, nazwisko i wiek, linijki z danymi zapisanymi w ten sposób mogą wyglądać następująco:
Adam|Kowal|24
Jan|Michalik|23
Piotr|Przykładowy|49
Oczywiście ilość pól w linijce może być dowolna. Zobacz jak pobrać daną z dowolnego pola w linii.
<?
$linijka="Jan|Michalik|23";
$pola = explode("|",$linijka);
echo $pola[0]; //Jan
echo $pola[1]; //Michalik
echo $pola[2]; //23
?>
Jeżeli pobrałeś już odpowiednią linię z pliku tekstowego, wystarczy potraktować ją poleceniem explode(), które rozbije tekst na pola rozdzielone znakiem, podanym jako pierwszy argument wywołania funkcji.
W tablicy $pola[] znajdą się poszczególne pola z linii, jak w przykładzie. Pierwsze pole będzie miało numer 0, więc podając w tablicy numer pola pomniejszony o jeden można się odwołać do dowolnego elementu z linijki.
Jeżeli chcesz wypisać na ekranie wszystkie pola z pliku, znajdujące się na drugiej pozycji (w naszym przykładzie byłyby to nazwiska), możesz użyć następującego programu:
<?
$plik= file("baza.txt");
foreach($plik as $linijka) {
$dane = explode("|",$linijka);
echo $dane[1]."<br>";
}
?>
Jak widzisz, bardzo łatwo można wydobyć z pliku wartości z dowolnych pól.