Numarare linii in fisier text

Secţiune dedicată începatorilor.

Moderatori: Moderatori, Start Moderator

tuxman
Junior Member
Mesaje: 31
Membru din: Sâm Noi 07, 2009 6:03 pm
Localitate: Constanta

Numarare linii in fisier text

Mesajde tuxman » Vin Ian 17, 2014 12:10 pm

Servus !

Am un fisier text de forma:

20110512075900
20110512075915
20110512075930
20110512075945
20110512075900
20110512080015
20110512075930
20110512080000
20110512075915
20110512075945
20110512075900
20110512075930
20110512075900
20110512075915

1) Vreau sa numar liniile dintre valorile care au '00' la sfarsit.
Rezultatul ar trebui sa fie: 4 3 3 2 2

2) Daca rezultatul este 4 sau 3( >=3) , sa pastreze doar linia cu '00', sa le stearga pe celelalte.
Daca rezultatul este < 3, sa pastreze doar linia cu '00', sa le stearga pe celelalte si sa adauge 9999(pe coloana 2)

Adica output-ul trebuie sa arate asa:

20110512075900
20110512075900
20110512080000
20110512075900 9999
20110512075900 9999

Pana acum am reusit doar sa identific linia care contine '00':

Cod: Selectaţi tot

$handle = fopen("proba.txt", "r");
if ($handle) {
    while (($line = fgets($handle)) !== false) {
       
      if(preg_match('/00\s*$/',$line)) {
             echo $line.'<br />';
      }
    }
} else {
    echo "Error";
}


Va multumesc anticipat,
Geo



elrukn
Average Member
Mesaje: 167
Membru din: Sâm Iul 28, 2007 11:16 pm
Localitate: Bucuresti

Re: Numarare linii in fisier text

Mesajde elrukn » Vin Ian 17, 2014 2:03 pm

eu as folosi un alt fisier pentru rezultat, sa ii spunem output.txt

pentru a identifica linia poti sa faci si cu:

Cod: Selectaţi tot

if (substr($line, -2) == '00')


foloseste o variabila sa numeri cate linii sunt intre cele cu 00.

cand intalnesti 00, ii dai reset si dupa caz adaugi sau nu 9999 pe coloana 2 sau nu.

Cod: Selectaţi tot

fwrite($output, $line . "\t\n");

Avatar utilizator
socu
Senior Member
Mesaje: 470
Membru din: Mie Apr 22, 2009 11:05 pm
Localitate: Marghita

Re: Numarare linii in fisier text

Mesajde socu » Vin Ian 17, 2014 10:43 pm

Exemplul tau e gresit, penultimul nu ar trebui sa aiba 9999 ca are 3 linii in spate.

Cod: Selectaţi tot

function test($in, $out, $n = 3) {
  $cnt = $n;
  while (!feof($in)) {
    $line = rtrim(fgets($in));
    if (substr($line, -2) == '00') {
      fwrite($out, $cnt < $n ? $line . "\t9999\n" : $line . "\n");
      $cnt = 0;
    }
    $cnt++;
  }
}

$r = fopen('input.txt', 'r');
$w = STDOUT; // inlocuieste cu fopen
test($r, $w);
fclose($r); fclose($w);

tuxman
Junior Member
Mesaje: 31
Membru din: Sâm Noi 07, 2009 6:03 pm
Localitate: Constanta

Re: Numarare linii in fisier text

Mesajde tuxman » Sâm Ian 18, 2014 1:55 pm

Multumesc mult !

Numai bine !


Înapoi la “PHP Incepători”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 37 vizitatori