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: 3747
  • 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: 1630
  • 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 1058 korisnika na forumu :: 63 registrovanih, 6 sakrivenih i 989 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: A.R.Chafee.Jr., amaterSRB, Battlehammer, bigfoot, bladesu, BlekMen, bokisha253, bufanje, cavatina, ccoogg123, cemix, cenejac111, comi_pfc, croato, dane007, darcaud, darios, Darko8, dekan.m, Dimitrije Paunovic, Djokislav, doklevise, Dorcolac, draganca, Excalibur13, Frunze, gasha, gomago, goxin, havoc995, hyla, Još malo pa deda, kobaja77, kokodakalo, krkalon, kubura91, kunktator, kybonacci, loon123, Luka Blažević, mercedesamg, milenko crazy north, MiroslavD, moldway, mushroom, Nemanja.M, nemkea71, novator, nuke92, raptorsi, Romibrat, S.Palestinac, ser.hill, Sirius, srbijaiznadsvega, Tvrtko I, VJ, vladulns, voja64, VojvodaMisic, wizzardone, Zeks, žeks62