Poslao: 25 Apr 2010 21:45
|
offline
- savan2
- Građanin
- Pridružio: 15 Jul 2009
- Poruke: 150
|
Pozdrav svima, nisam bio dugo hehe a sad mi zapelo nesto i nikako ne mogu da konstruisem u glavi kako to da uradim. Radi se o dva tekstualna fajla koja treba da uporedim. Primer:
Prvi fajl:
0100:000000 "Seca Issuer"
0100:00ffff "Sky Italy Fake ID`s"
0100:000001 "S1-Seca Unknown"
0100:000002 "Orbit (Old) (8W/26E)"
0100:000003 "S1-Canal+ France (Old) (19E)"
0100:000004 "S1-CSN France (Old) (19E)"
0100:000005 "Stream (Old) (13E)"
0100:000009 "S1-CSN/TPS (Old) (13E)"
0100:00000a "Prova (13E)"
0100:00000b "Premiere (Old) (19E)"
0100:00000c "S1-CSD Espana (Old) (19E)"
0100:00000d "S1-TVB Superchannel (Old) (19E)"
0100:00000e "S1-Canal+ Horizons (Old)"
0100:00000f "S1-AB Sat/Cinestar (Old) (13E)"
0100:000010 "S1-Telepiu/D+ (Old) (13E)"
0100:000011 "S1-Calcio+ (Old)(13E)"
0100:000012 "S1-Pro Tv , Equida (Old) (19E)"
Drugi file:
0100:00ffff "Sky Italy Fake ID`s"
0100:000001 "S1-Seca Unknown"
0100:000002 "Orbit (Old) (8W/26E)"
0100:000003 "S1-Canal+ France (Old) (19E)"
0100:000004 "S1-CSN France (Old) (19E)"
0100:000005 "Stream (Old) (13E)"
0100:000009 "S1-CSN/TPS (Old) (13E)"
0100:00000a "Prova (13E)"
0100:00000b "Premiere (Old) (19E)"
Znaci sad treba da uporedim ta dva fajla i da skripta izbaci iz prvog fajla sve sto ima u drugom fajlu, i da prikaze ostatak. Znaci kao neki search replace script posto radim na nekom projektu i sve je u nizovima dok mi je ovo samo za primer. Hvala svima ko zeli da pomogne
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 25 Apr 2010 22:49
|
offline
- Rastafarii
- Moderator foruma
- Pridružio: 22 Mar 2006
- Poruke: 3760
- Gde živiš: 127.0.0.1
|
To bi islo otprilike ovako:
prvo sa file() ucitas drugi fajl u neki niz (obrati paznju da koristis flag-ove zbog izbacivanja new line i empty line.
Onda, ucitavas jedan po jedan red prvog fajla (fopen(), fread(), fclose()) i sa in_array() proveravas da li te linije ima u drugom nizu.
Ako nema, jedan echo stampa taj red
|
|
|
|
Poslao: 25 Apr 2010 22:57
|
offline
- savan2
- Građanin
- Pridružio: 15 Jul 2009
- Poruke: 150
|
Ajde molim te ako hoces kad uhvatis vremena jedan example, stao mi mozak ne mogu nikako da iskonstruisem, pozz i hvala
|
|
|
|
Poslao: 25 Apr 2010 23:08
|
offline
- Rastafarii
- Moderator foruma
- Pridružio: 22 Mar 2006
- Poruke: 3760
- Gde živiš: 127.0.0.1
|
A sto ne probas da se potrudis sam, krenes sa nekim kodom, pa da te ispravimo ako negde pogresis? Tako ces nesto i nauciti, ako ti neko non - stop daje gotov kod - tesko.
Inace, kod za ovako nesto ima ukupno 9 linija. I sve mozes da ih pokupis sa linkova koje sam ti dao
|
|
|
|
Poslao: 26 Apr 2010 23:22
|
offline
- savan2
- Građanin
- Pridružio: 15 Jul 2009
- Poruke: 150
|
Joj pa da znam kako nebi pitao nikog, ok evo da pocnem ali nista nisam uradio jer ne znam kako to da izvedem
<?php
$rr = file('data3');
$filename = "data4.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
if (!in_array($contents, $rr)) echo $contents;
fclose($handle);
?>
|
|
|
|
|
Poslao: 27 Apr 2010 10:36
|
offline
- savan2
- Građanin
- Pridružio: 15 Jul 2009
- Poruke: 150
|
ne kontam kako se radi sa in_array jer ne mogu logiku nikako da uradim, a tu mi je najveci problem. Ako stavim !in_array onda ne prikaze nista. To da je sa !strstr pa bi vec moglo da se prica. Primer
$rr = file('data3.txt');
foreach($rr as $linija)
{
if(!strstr($linija, '0100:000000 "Seca Issuer"')) echo $linija;
}
Kontam ja da je prvi fajl u nizu a drugi u stringu, i da treba da citam red po red od drugog fajla i da ga uporedjujem u nizovima prvog fajla ali ne kontam kako. Ako hoces pomozi ako neces tvoja stvar, ja sam te zamolio ko coveka da mi pomognes jednim examplom a ne ovako da radim neke domace zadatke. Ja da sam znao procitati na php.net kako nebi dosao ovde jbg
|
|
|
|
Poslao: 27 Apr 2010 11:01
|
offline
- Rastafarii
- Moderator foruma
- Pridružio: 22 Mar 2006
- Poruke: 3760
- Gde živiš: 127.0.0.1
|
Daj coveku ribu, nahranices ga za jedan dan. Nauci ga da peca, i bice sit ceo zivot.
<?php
$f1 = file('putanja/do/prvog/fajla', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$f2 = fopen('putanja/do/drugog/fajla','r');
while (!feof($f2)) {
$r = fread($f2,1024);
if (in_array($r,$f1) and !empty($r)) {
echo $f1 . "\n";
}
}
fclose($f2);
?>
|
|
|
|
Poslao: 27 Apr 2010 12:26
|
offline
- savan2
- Građanin
- Pridružio: 15 Jul 2009
- Poruke: 150
|
Napisano: 27 Apr 2010 11:49
Nismo se mi razumeli izgleda a i ovo sto si okacio ne fercera jer je $f1 u nizu a ne u stringu. Meni treba primer skripte koja ce da uporedi drugi fajl sa prvim fajlom, i da prikaze samo ono iz "prvog fajla" a sto nema u drugom fajlu ako me razumes. Znaci ovo iz drugog fajla ako ima u prvom fajlu ce da preskoci i da prikaze samo ono sto nema. Tu logiku ne mogu da skontam kako da uradim
Dopuna: 27 Apr 2010 12:26
Otprilike ovako, mada ne kontam zasto logika ne preskace ove linije iz drugog fajla
<?php
$f1 = file('prvi.txt', FILE_IGNORE_NEW_LINES || FILE_SKIP_EMPTY_LINES);
$f2 = fopen('drugi.txt','r');
while (!feof($f2))
{
$r = fread($f2,1024);
foreach ($f1 as $f3)
{
if (!in_array($r, $f1) && !empty($r)) echo $f3 . "\n";
}
}
fclose($f2);
?>
|
|
|
|
Poslao: 27 Apr 2010 13:25
|
offline
- Rastafarii
- Moderator foruma
- Pridružio: 22 Mar 2006
- Poruke: 3760
- Gde živiš: 127.0.0.1
|
Okej, onda ide obrnuto
<?php
$f1 = file('putanja/do/drugog/fajla', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
//ceo drugi fajl smestis u niz, zbog f-je in_array()
$f2 = fopen('putanja/do/prvog/fajla','r');
//otvoris prvi fajl
while (!feof($f2)) {
//dok ne stigne do kraja fajla
$r = fread($f2,1024);
//procitaj jednu liniju fajla
if (!in_array($r,$f1) and !empty($r)) {
//ako te linije NEMA u drugom fajlu, i nije blanko linija
echo $f1 . "\n";
//odstampaj tu liniju :)
}
//prelazis na sledecu liniju
}
fclose($f2);
//zatvori fajl
?>
|
|
|
|