Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wyciąganie słów z pliku txt
Forum PHP.pl > Forum > Przedszkole
gsmphone
Witam,

Mam plik txt a w nim dane produktów w każdej linijce np:

Słoik, niebieski, duży, wieczko
Butelka, brązowa, mała, kapsel


Chodzi mi o to żeby czytało ostatnią linijke i mi na ekranie wypisywało. Do tego bez problemu mam kod:

  1. <?php
  2. $uchwyt = fopen("users.txt", "r");
  3. while ($userinfo = fscanf($uchwyt, "%s %s %s %s")) {
  4. list ($co, $kolor, $rozmiar, $dodatek) = $userinfo;
  5.  echo"$co | $kolor | $rozmiar | $dodatek<br>";
  6. ?>


i on wyświetli coś takiego:

Butelka | brązowa | mała | kapsel (przecinków niema bo w innym kodzie je usuwam)


Wszystko by było w porządku tylko jak do pliku txt wpisze dwu składnikowy wyraz to się psuje np:

Butelka jeden, brązowa, mała, kapsel

Wtedy zamiast wyświetlić mi po kolei to wyświetla mi:

Butelka | jeden | brązowa | mała

Czyli zapomina dopisać kapsel a Butelka jeden nie traktuje jako jedno.
Co mam zrobić w takim wypadku?
luck
Wczytuj dane przez "file()", a do rozbicia każdej linii użyj "explode()"
gsmphone
Cytat(luck @ 24.08.2008, 10:47:46 ) *
Wczytuj dane przez "file()", a do rozbicia każdej linii użyj "explode()"



Czyli coś takiego?:
  1. <?php
  2. $uchwyt = [b]file[/b]("users.txt", "r");
  3. while ($userinfo = fscanf($uchwyt, "%s %s %s %s")) {
  4.  [b] explode[/b] ($co, $kolor, $rozmiar, $dodatek) = $userinfo;
  5.  echo"$co | $kolor | $rozmiar | $dodatek<br>";
  6. ?>
barthpl
Jeżeli zawsze oddzielasz przecinkami to może prościej byłoby pobierać linię i zrobić przy pomocy explode" title="Zobacz w manualu PHP" target="_manual:
  1. <?php
  2. $lines = file( $filename );
  3. foreach( $lines as $line ) {
  4. list ($co, $kolor, $rozmiar, $dodatek) = explode( ',', $line );
  5. echo"$co | $kolor | $rozmiar | $dodatek<br>";
  6. }
  7. ?>


Lub rozwiązanie przy pomocy fgetcsv" title="Zobacz w manualu PHP" target="_manual:
  1. <?php
  2. $handler= fopen ( $filename,"r");
  3. while( (list ($co, $kolor, $rozmiar, $dodatek) = fgetcsv($handler, 1000, ",")) !== false )
  4. echo"$co | $kolor | $rozmiar | $dodatek<br>";
  5. fclose ($uchwyt);
  6. ?>

Tego rozwiązania co prawda jeszcze nie testowałem ale wygląda OK.
luck
Miałem na mysli dokładnie to, co napisał barthpl. W tym wypadku powinno się sprawdzić doskonale.
gsmphone
Dzięki, właśnie o takie coś mi chodziło:)
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.