explode funkcija, problem sa novim redom

1

explode funkcija, problem sa novim redom

offline
  • Dusan Kostic
  • @kosticdk
  • Pridružio: 24 Avg 2011
  • Poruke: 300
  • Gde živiš: Beograd

Ovako ljudi imam fajl.txt koji sadrzi:

neki tekst koji ima novi red i jos par novih redova bla bla bla |pa nesto|i jos nesto|itd..

e sad ovaj kod bi trebalo da uradi to sto ja hocu, ali on nesto nece...
<?php $fajl = "fajl.txt"; $otvorenfajl = fopen($fajl, 'r') or die("Error"); if (isset($_POST['submit'])){    //nesto } $trazi= explode('|', fgets($otvorenfajl)); fclose($otvorenfajl); echo "trazi do prve crte:<br />".$trazi[0]."<br />pa do druga<br />".$trazi[1]; ?>

Sve radi okej kada nema novog reda cim se ubaci u fajl.txt novi red kod pukne Mad



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Citat:string fgets ( resource $handle [, int $length ] )

Gets a line from file pointer.

Sudeci po ovome, fgets cita samo jednu liniju iz fajla.



offline
  • Dusan Kostic
  • @kosticdk
  • Pridružio: 24 Avg 2011
  • Poruke: 300
  • Gde živiš: Beograd

Nisi mi bas puno pomoga, izgleda da nismo na istom nivou php-a, to je ocigledno

offline
  • lnenad  Male
  • Stručni saradnik
    Web
  • Nenad
  • Arhitetak
  • Pridružio: 16 Jan 2007
  • Poruke: 2860
  • Gde živiš: Bijeljina

$trazi variabla se formira "eksplodiranjem" fgets funkcije koja koristi "|" znak kao separator. To znaci da fgets otvori fajl "fajl.txt", procita samo jednu liniju iz njega (mozes ti imati milion linija u fajlu), vrati tu liniju funkciji explode, i ona se posle obrade kao niz vraca u $trazi (sto apsolutno nema veze sa tvojim fajlom, osim u poslednjoj liniji istog gdje bi funkcija imala stvarno sta i da obradi).

Sta znaci "pukne" kod i da li imas neku gresku ?

offline
  • Dusan Kostic
  • @kosticdk
  • Pridružio: 24 Avg 2011
  • Poruke: 300
  • Gde živiš: Beograd

Da, izbacuje gresku tj. tri greske

offline
  • lnenad  Male
  • Stručni saradnik
    Web
  • Nenad
  • Arhitetak
  • Pridružio: 16 Jan 2007
  • Poruke: 2860
  • Gde živiš: Bijeljina

Mogao bi da ih podijelis sa nama ?

offline
  • Dusan Kostic
  • @kosticdk
  • Pridružio: 24 Avg 2011
  • Poruke: 300
  • Gde živiš: Beograd

Notice: Undefined offset: 1 in C:\xampp\htdocs\dklab\admin\edit.php on line 9
9 linija:
echo "trazi do prve crte:<br />".$trazi[0]."<br />pa do druga<br />".$trazi[1];

offline
  • PHP developer
  • Pridružio: 22 Mar 2006
  • Poruke: 3662
  • Gde živiš: 127.0.0.1

Zamisli - javlja ti gresku kad pokusavas da odstampas nepostojeci element niza Wink

explode() f-ja vraca niz - cak i kad u stringu koji explode-ujes ne postoji delimiter (prvi param explode f-je). Niz koji vrati ima za jedan veci broj elemenata nego sto ima pojavljivanja delimitera u stringu.

S' obzirom da u stringu "neki tekst koji ima" nema delimitera "|", niz koji dobijes nazad ima 1 element (sa index-om 0), te element sa index-om 1 ne postoji ($trazi[1]), dobijas Notice.

Btw, da bi procitao jos neku liniju (osim prve), koristi ovako nesto:

while(!feof($otvorenfajl)) {     $trazi= explode('|',fgets($otvorenfajl); }

ili, jos bolje:

$file = file('fajl.txt',FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); foreach ($file as $line) {     $trazi = explode('|',$line); }

offline
  • C# and PHP Developer
  • Pridružio: 16 Feb 2011
  • Poruke: 1627
  • Gde živiš: Pancevo

1. Sredi te errore
2. Sve to provuci kroz petlju
<?php $file = fopen("MyCity.txt", "r") or exit("Unable to open file!"); //Output a line of the file until the end is reached while(!feof($file))   {   echo fgets($file). "<br />";   } fclose($file); ?>

offline
  • Dusan Kostic
  • @kosticdk
  • Pridružio: 24 Avg 2011
  • Poruke: 300
  • Gde živiš: Beograd

Rastafarii ::Zamisli - javlja ti gresku kad pokusavas da odstampas nepostojeci element niza Wink

explode() f-ja vraca niz - cak i kad u stringu koji explode-ujes ne postoji delimiter (prvi param explode f-je). Niz koji vrati ima za jedan veci broj elemenata nego sto ima pojavljivanja delimitera u stringu.

S' obzirom da u stringu "neki tekst koji ima" nema delimitera "|", niz koji dobijes nazad ima 1 element (sa index-om 0), te element sa index-om 1 ne postoji ($trazi[1]), dobijas Notice.

Btw, da bi procitao jos neku liniju (osim prve), koristi ovako nesto:

while(!feof($otvorenfajl)) {     $trazi= explode('|',fgets($otvorenfajl); }

ili, jos bolje:

$file = file('fajl.txt',FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); foreach ($file as $line) {     $trazi = explode('|',$line); }


Hvala, resio sam sa foreach-om Smile
Hvala svima! Ziveli

Ko je trenutno na forumu
 

Ukupno su 749 korisnika na forumu :: 30 registrovanih, 2 sakrivenih i 717 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 8u47, A.R.Chafee.Jr., Banijac, Bloody, caesar, dankisha, darcaud, darkstar101, DejanTepic, dika69, djo97, Duh sa sekirom, havoc995, HrcAk47, kovinacc, Libertas, liman, lovac12, milenko crazy north, Miskohd, nenad stojanov, Panter, pavle_pzs, pein, Recce, robertino, Smd, Snorks, suton, VJ