Avatar billede tax Nybegynder
07. oktober 2003 - 20:03 Der er 6 kommentarer og
1 løsning

opdele fil i et array

jeg har en fil med følgende data

# IPFMv0.11.5 2003/10/07 19:50:00 (local time) -- dump every 0d00:10:00 -- listening on eth0
# Host                                  In (bytes)    Out (bytes)  Total (bytes)
AAAA                                    125086677      11374708      136461385
BBBBBBB                                  71598351        5002430      76600781
CCCCCCCCCCC                              52470792      23777978      76248770
DDDDDDD                                  43834226        8009271      51843497
# end of dump 2003/10/07 19:50:00


Disse data vil jeg gerne have vist i en tabel


jeg har prøvet noget i denne stil:


  <?php
   
        $fil = fopen("./ipfm/traffic","r");
   
    $line = fgets($fil, 1024);
    $line = fgets($fil, 1024);
   
    while($line = fgets($fil, 1024))
    {
        /*$line =  ereg_replace (chr(32), ' ', $line);
        for ($s = 0; $s < 10 ; $s++)
            $line=ereg_replace (chr(32), "", $line);*/
        $parts = explode ( ' ' ,$line);
            $name[]    = $parts[0];
            $in[]     = $parts[1];
            $out[]     = $parts[2];
            $totals[]     = $parts[3];

       
    }
    fclose($fil);
   
        //array_multisort($name, $in, SORT_DESC,$out,$totals);
   
        echo("<table border=1 width=100%>\n");

        print("<tr>");
            print("<td>");
                print("<b>Hostname</b>");
            print("</td>");
            print("<td>");
                print("<b>Received</b>");
            print("</td>");
            print("<td>");
                print("<b>Sent</b>");
            print("</td>");
            print("<td>");
                print("<b>Total</b>");
            print("</td>");
        print("</tr>");

    for ($i = 0; $i < count($in);$i++)
    {
        print("<tr>");
            print("<td>");
                if ($name[$i] != "")
                    print($name[$i]);
                else
                    print("Unknown");
            print("</td>");
            print("<td>");
                echo($in[$i]);
            print("</td>");
            print("<td>");
                echo($out[$i]);
            print("</td>");
            print("<td>");
                echo($totals[$i]);
            print("</td>");
           
        print("</tr>");
    }
    echo("</table>\n");
   
        require("./ipfm/traffic");
    ?>


Mit problem er at dataene er adskilt af et variabelt antal 20(HEX) tegn.

Hvordan får jeg opdelt dette i et array?!?
Avatar billede erikjacobsen Ekspert
07. oktober 2003 - 20:05 #1
Du skal nok bruge en

$parts = split ( ' +' ,$line);

og så skal du sortere #-linierne fra, så du kun tæller op på de andre

  if (!ereg('^#',$line)) { 
    // god linie
    .......
  }
Avatar billede tax Nybegynder
07. oktober 2003 - 20:23 #2
erikjacobsen: Jeg går på sagen nu!
Avatar billede tax Nybegynder
07. oktober 2003 - 20:53 #3
erikjacobsen: Det spiller -> du skal have points!
Avatar billede erikjacobsen Ekspert
07. oktober 2003 - 21:19 #4
Du forstår også hvad der sker ?? ;)
Avatar billede tax Nybegynder
07. oktober 2003 - 22:27 #5
Nogenlunde. Men jeg har ikke nærlæst specifikationen. tricket lå nok i ' +'?!?
Avatar billede erikjacobsen Ekspert
07. oktober 2003 - 22:29 #6
Jah, ' +' er et regulært udtryk, der siger een eller flere blanke.
Så kan du ikke bruge explode, men split.
Avatar billede tax Nybegynder
07. oktober 2003 - 22:56 #7
Thanx
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester