Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Wyciąganie słów z pliku txt
gsmphone
post
Post #1





Grupa: Zarejestrowani
Postów: 150
Pomógł: 0
Dołączył: 20.10.2006

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


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?
Go to the top of the page
+Quote Post
luck
post
Post #2





Grupa: Zarejestrowani
Postów: 317
Pomógł: 58
Dołączył: 6.11.2005

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


Wczytuj dane przez "file()", a do rozbicia każdej linii użyj "explode()"
Go to the top of the page
+Quote Post
gsmphone
post
Post #3





Grupa: Zarejestrowani
Postów: 150
Pomógł: 0
Dołączył: 20.10.2006

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


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. ?>


Ten post edytował gsmphone 24.08.2008, 09:54:42
Go to the top of the page
+Quote Post
barthpl
post
Post #4





Grupa: Zarejestrowani
Postów: 142
Pomógł: 35
Dołączył: 5.12.2006
Skąd: Wrocław

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


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.

Ten post edytował barthpl 24.08.2008, 09:58:02
Go to the top of the page
+Quote Post
luck
post
Post #5





Grupa: Zarejestrowani
Postów: 317
Pomógł: 58
Dołączył: 6.11.2005

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


Miałem na mysli dokładnie to, co napisał barthpl. W tym wypadku powinno się sprawdzić doskonale.
Go to the top of the page
+Quote Post
gsmphone
post
Post #6





Grupa: Zarejestrowani
Postów: 150
Pomógł: 0
Dołączył: 20.10.2006

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


Dzięki, właśnie o takie coś mi chodziło:)
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: 15.09.2025 - 08:44