<?php $ff = file("db/iplista.txt"); for ($i = 0; $i < count($ff); $i++) { if ($ff[$i] == "123.123.123.123") { $tiedot = explode("|", $ff[$i], 2); $ip = $tiedot[0]; $kello = $tiedot[1]; $aika = $tiedot[2]; echo "$ip $kello $aika"; }; }; ?>
ja se iplista.txt sisältää (esimerkki)
222.225.255.255|1182787261| 558.255.012.312|1182803506| 123.123.123.123|1182803558| 810.186.183.191|1182809369|
Tämmöinen ei kuitenkaan toimi. Tarkoitus on hakea oikea ip tiedostosta ja lukea ip:n vierellä olevat tiedot.
debugilla selviää syy.
<?php $ff = file("db/iplista.txt"); for ($i = 0; $i < count($ff); $i++) { if ($ff[$i] == "123.123.123.123") { $tiedot = explode("|", $ff[$i], 2); $ip = $tiedot[0]; $kello = $tiedot[1]; $aika = $tiedot[2]; echo "$ip $kello $aika"; }else{ echo 'Muuttuja $ff['.$i.'] ei ollut "123.123.123.123", vaan se oli "'.$ff[$i].'"<br/>'."\n"; } } ?>
Saat pähkäillä myös itse mistä syy johtuu, kun ajat tämän ;)
Se ei kuitenkaan toimi vaikka laitoin hakusanaksi 123.123.123.123 ja tiedostossakin on 123.123.123.123|1182803558-rivi. Sain kuitenkin toi toimimaan näin:
<?php if (($fille = file("db/iplista.txt")) !== false) { foreach ($fille as $vallue) { $datta = explode("|", $vallue); if ($datta[0] == "123.123.123.123") echo ("".$datta[2].""); } // foreach end } // if end ?>
Nyt ilmestyi uusi ongelma; tulostettuna 1182787261 jälkeen tulee rivinvaihto, miten saan sitä pois?
Funktiolla trim.
Metabolix kirjoitti:
Funktiolla trim.
<?php $korvaavat = array(" " => ""; if (($fille = file("db/iplista.txt")) !== false) { foreach ($fille as $vallue) { $datta = explode("|", $vallue); if ($datta[0] == "123.123.123.123") $dat = strtr($datta[2], $korvaavat); echo ("$dat"); } // foreach end } // if end ?>
Ei toimi :(
käytä sitä trimmiä... (käytit strtr:ää)
$dat = trim($datta[2]);
Lebe80 kirjoitti:
käytä sitä trimmiä... (käytit strtr:ää)
$dat = trim($datta[2]);
Olen vanhaaikainen :D Laitoin ehdottamasi koodi siihen, ja nyt tietue tulostuu nätisti ilman rivinvaihtoa mutta toistuu 13kertaa :S
$datta[2] on aina ja pelkästään yksi rivinvaihto, koska sinulla on vain 2 solua taulukossa, eka solu on $datta[0] toka $datta[1], ja kolmas on se mitä jää tuon viimeisen | merkin jälkeen jäljelle, eli rivinvaihto.
Trimmiä ei kannata käyttää noissa juttuissa missä explode erottelee nuo tiedot, vaan laittaa viimeiseksi merkiksi sen | merkin, jolloin rivinvaihtoa ei tule viimeiseen soluun, mutta juuri näinhän sinä oletkin tehnyt, joten ihan oikeilla jäljillä, mutta vika on kyllä tuossa että sinulla ei ole kuin 2 arvoa, mutta yrität saada jostain sen kolmannen arvon, jota ei edes ole olemassa.
T.M. kirjoitti:
$datta[2] on aina ja pelkästään yksi rivinvaihto, koska sinulla on vain 2 solua taulukossa, eka solu on $datta[0] toka $datta[1], ja kolmas on se mitä jää tuon viimeisen | merkin jälkeen jäljelle, eli rivinvaihto.
Trimmiä ei kannata käyttää noissa juttuissa missä explode erottelee nuo tiedot, vaan laittaa viimeiseksi merkiksi sen | merkin, jolloin rivinvaihtoa ei tule viimeiseen soluun, mutta juuri näinhän sinä oletkin tehnyt, joten ihan oikeilla jäljillä, mutta vika on kyllä tuossa että sinulla ei ole kuin 2 arvoa, mutta yrität saada jostain sen kolmannen arvon, jota ei edes ole olemassa.
Eikun laitan kolmannelle arvolle tarkan päivänmäärä, joten arvo muuttui 2:ksi.
Muuten nyt toimii, kiitoksia paljon kaikille joka auttoivat! :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.