Michael W.: Zählscript

hallo,

wie könnte den in php ein zähl script aussehen wenn ich folgende datei habe (die auch nach einer auswertung enstanden ist):

USER=hossil

Processor: AMD Athlon(tm) (Thunderbird)-1041
CPU Clock Speed: 1041 MHz
Extended Memory: 127 MB (64 MB Free)
C: 19530 MB 1600 MB 17 GB RWZ Fixed Disk
USER=baciaba

Processor: Intel Celeron-941
CPU Clock Speed: 943 MHz
Extended Memory: 111 MB (64 MB Free)
C: 19530 MB 766 MB 18 GB RWZ Fixed Disk
USER=breitma

Processor: AMD Athlon(tm) (Thunderbird)-1041
CPU Clock Speed: 1041 MHz
Extended Memory: 127 MB (64 MB Free)
C: 19530 MB 911 MB 18 GB RWZ Fixed Disk
USER=christos

Processor: Intel CeleronA-364
CPU Clock Speed: 364 MHz
Extended Memory: 127 MB (64 MB Free)
C: 8040 MB 1013 MB 7027 MB RWZ Fixed Disk
USER=cottonla

Processor: AMD Athlon(tm) (Thunderbird)-1043
CPU Clock Speed: 1043 MHz
Extended Memory: 127 MB (64 MB Free)
C: 19530 MB 1191 MB 17 GB RWZ Fixed Disk
USER=duhanal

Processor: AMD Athlon(tm) (Thunderbird)-1043
CPU Clock Speed: 1043 MHz
Extended Memory: 127 MB (64 MB Free)
C: 19530 MB 755 MB 18 GB RWZ Fixed Disk

.
.
.

ich möchte jetzt das der gesamte text sortiert wird - ungefähr so:

Processoren:
Processor: AMD Athlon(tm) (Thunderbird)-1041 | 2
Processor: Intel Celeron-941                 | 1
Processor: Intel CeleronA-364                | 1
Processor: AMD Athlon(tm) (Thunderbird)-1043 | 2

CPU:
CPU Clock Speed: 1041 MHz  | 2
CPU Clock Speed: 943 MHz   | 1
CPU Clock Speed: 364 MHz   | 1
CPU Clock Speed: 1043 MHz  | 2

Extended Memory: 127 MB (64 MB Free) | 5
Extended Memory: 111 MB (64 MB Free) | 1

ist das möglich ? wenn ja wie ?

Danke

  1. Hoi !

    <?php

    $dat = file("datei.txt");
    $dat2 = Array();
    $dat3 = Array();
    for($i=0, $j=count($dat); $i<$j; $i++)
    { if(trim($dat[$i])!=""))
      {  $x = md5($dat[$i]);
         if($dat2[$x]=="")
         { $dat2[$x] = 0;
           $dat3[$x] = $dat[$i]; }
         $dat2[$x]++; } }

    while(list($k, $v) = each($dat2))
     echo $dat3[$k]." | ".$v;

    ?>

    So ungefähr kannst Du das machen.
    Es gibt noch weitere Möglichkeiten, ohne md5. Die würden dann wohl meistens mit in_array funktionieren. Was geschwindigkeitstechnisch besser ist darfst Du selber rausfinden ;-)

    Wer Syntax-Fehler findet darf sie behalten und/oder korrigieren ;)

    Ciao,

    Harry

    1. <?php
      $dat = file("datei.txt");
      $dat2 = Array();
      $dat3 = Array();
      for($i=0, $j=count($dat); $i<$j; $i++)
      { if(trim($dat[$i])!=""))
        {  $x = md5($dat[$i]);
           if($dat2[$x]=="")
           { $dat2[$x] = 0;
             $dat3[$x] = $dat[$i]; }
           $dat2[$x]++; } }
      while(list($k, $v) = each($dat2))
      echo $dat3[$k]." | ".$v;
      ?>

      ausgabe:

      USER=hossil | 1Processor: AMD Athlon(tm) (Thunderbird)-1041 | 9CPU Clock Speed: 1041 MHz | 9Extended Memory: 127 MB (64 MB Free) | 23C: 19530 MB 1600 MB 17 GB RWZ Fixed Disk | 2USER=baciaba | 1Processor: Intel Celeron-941 | 1CPU Clock Speed: 943 MHz | 1Extended Memory: 111 MB (64 MB Free) | 1C: 19530 MB 766 MB 18 GB RWZ Fixed Disk | 1USER=breitma | 1C: 19530 MB 911 MB 18 GB RWZ Fixed Disk | 1USER=christos | 1Processor: Intel CeleronA-364 | 1CPU Clock Speed: 364 MHz | 1C: 8040 MB 1013 MB 7027 MB RWZ Fixed Disk | 1USER=cottonla | 1Processor: AMD Athlon(tm) (Thunderbird)-1043 | 8CPU Clock Speed: 1043 MHz | 8C: 19530 MB 1191 MB 17 GB RWZ Fixed Disk | 1USER=duhanal | 1C: 19530 MB 755 MB 18 GB RWZ Fixed Disk | 1USER=firlebe | 1C: 19530 MB 800 MB 18 GB RWZ Fixed Disk | 1USER=fittkahe | 1Processor: Intel Celeron-695 | 1CPU Clock Speed: 693 MHz | 1Extended Memory: 63 MB (63 MB Free) | 2C: 9717 MB 1130 MB 8587 MB Fixed Disk | 1USER=gemmecel | 1C: 19530 MB 960 MB 18 GB RWZ Fixed Disk | 1USER=genocash | 1Processor: Intel Pentium-167 | 1CPU Clock Speed: 167 MHz | 1Extended Memory: 31 MB (31 MB Free) | 1C: 1220 MB 271 MB 949 MB Fixed Disk | 1USER=glockka | 1Processor: Intel CeleronA-334 | 1CPU Clock Speed: 334 MHz | 1Extended Memory: 95 MB (64 MB Free) | 1C: 4102 MB 741 MB 3361 MB RWZ Fixed Disk | 1USER=goettejo | 1C: 4102 MB 1531 MB 2571 MB RWZ Fixed Disk | 1USER=haertika | 1Processor: AMD Duron(tm)-782 | 1CPU Clock Speed: 782 MHz | 1C: 19452 MB 856 MB 18 GB RWZ Fixed Disk | 1USER=hergenul | 1Processor: AMD Athlon(tm) (undistinguished model)-1244 | 2CPU Clock Speed: 1244 MHz | 2C: 19530 MB 15 GB 3907 MB RWZ Fixed Disk | 1USER=hossil | 1USER=jeckelwi | 1C: 19530 MB 975 MB 18 GB RWZ Fixed Disk | 1USER=jeromijo | 1C: 19530 MB 751 MB 18 GB RWZ Fixed Disk | 1USER=klinglwo | 1C: 19530 MB 1004 MB 18 GB RWZ Fixed Disk | 1USER=kolmarhe | 1Processor: AMD Duron(tm)-834 | 1CPU Clock Speed: 834 MHz | 1C: 9717 MB 1818 MB 7899 MB RWZ Fixed Disk | 1USER=kowalspa | 1Processor: AMD Athlon(tm) (undistinguished model)-1037 | 1CPU Clock Speed: 1037 MHz | 1C: 6138 MB 1953 MB 4185 MB RWZ Fixed Disk | 1USER=kuehnst | 1Processor: Intel P8-1614 | 2CPU Clock Speed: 1614 MHz | 2Extended Memory: 511 MB (64 MB Free) | 1C: 19530 MB 2241 MB 16 GB RWZ Fixed Disk | 1USER=malikma | 1C: 19083 MB 1345 MB 17 GB RWZ Fixed Disk | 1USER=moscheha | 1C: 19530 MB 813 MB 18 GB RWZ Fixed Disk | 1USER=quasdocl | 1Extended Memory: 12 MB (64 MB Free) | 1C: 39070 MB 3714 MB 34 GB RWZ Fixed Disk | 1USER=staudtad | 1C: 19444 MB 777 MB 18 GB RWZ Fixed Disk | 1USER=strohsje | 1Processor: AMD Athlon(tm) (undistinguished model)-1268 | 1CPU Clock Speed: 1290 MHz | 1C: 7978 MB 2026 MB 5952 MB RWZ Fixed Disk | 1USER=supervisor | 1Processor: Intel Celeron-697 | 1CPU Clock Speed: 697 MHz | 1Extended Memory: 64 MB (64 MB Free) | 1C: 28602 MB 841 MB 27 GB RWZ Fixed Disk | 1USER=uhlwi | 1Processor: AMD Athlon(tm) (undistinguished model)-1451 | 1CPU Clock Speed: 1451 MHz | 1Extended Memory: 8201 KB (64 MB Free) | 1C: 8017 MB 1727 MB 6290 MB RWZ Fixed Disk | 1USER=uniuser | 1D: 11496 MB 1564 MB 9932 MB Fixed Disk | 1USER=w2kuser | 1C: 4102 MB 1523 MB 2579 MB RWZ Fixed Disk | 1USER=winuser | 1C: 39061 MB 471 MB 37 GB RWZ Fixed Disk | 1USER=woelkmi | 1C: 19530 MB 3182 MB 15 GB RWZ Fixed Disk | 1

      hhhhhhhhhhhmmmmmmmmmmmmmmmm

      da müssten wohl noch ein paar absätze rein und die suche würde ich auch gerne beschränken

      user und fixed disk brauchen wir in dem fall nicht.

      Danke

      1. n'Abend»» ausgabe:

        USER=hossil | 1Processor: AMD Athlon(tm) (Thunderbird)-1041 [usw. blabla]

        da müssten wohl noch ein paar absätze rein und die suche würde ich auch gerne beschränken

        Dann mußt Du halt die Zeile noch etwas modifizieren:

        echo $dat3[$k]." | ".$v;

        z.B. echo $dat3[$k]." | ".$v."<br />\n";

        user und fixed disk brauchen wir in dem fall nicht.

        Dann erweiter einfach den Algorithmus so, daß er sie aussortiert. Dazu wirst Du halt den Teil "{ if(trim($dat[$i])!=""))" mit ein paar regulären Ausdrücken erweitern müssen.

        Ciao,

        Harry

        1. Dann erweiter einfach den Algorithmus so, daß er sie aussortiert. Dazu wirst Du halt den Teil "{ if(trim($dat[$i])!=""))" mit ein paar regulären Ausdrücken erweitern müssen.

          kannst du mir ein beispiel geben ?

          1. Tag

            Dann erweiter einfach den Algorithmus so, daß er sie aussortiert. Dazu wirst Du halt den Teil "{ if(trim($dat[$i])!=""))" mit ein paar regulären Ausdrücken erweitern müssen.

            kannst du mir ein beispiel geben ?

            $a = trim($dat[$i]);
            if($a!="" && !preg_match("/[1]*user/i", $a))
             ...

            Dann werden auch alle Zeichenketten aussortiert, in denen vor dem "=" irgendwo "user" vorkommt.

            Ciao,

            Harry


            1. ^= ↩︎

            1. hallo,

              die ausgabe gefällt mir so irgendwie nicht.
              vorallem da die begriffe nicht geoordnet sind:

              9 | Processor: AMD Athlon(tm) (Thunderbird)-1041
              9 | CPU Clock Speed: 1041 MHz
              23 | Extended Memory: 127 MB (64 MB Free)
              1 | Processor: Intel Celeron-941
              1 | CPU Clock Speed: 943 MHz
              1 | Extended Memory: 111 MB (64 MB Free)
              1 | Processor: Intel CeleronA-364
              1 | CPU Clock Speed: 364 MHz
              8 | Processor: AMD Athlon(tm) (Thunderbird)-1043
              8 | CPU Clock Speed: 1043 MHz
              1 | Processor: Intel Celeron-695
              1 | CPU Clock Speed: 693 MHz
              2 | Extended Memory: 63 MB (63 MB Free)
              1 | Processor: Intel Pentium-167
              1 | CPU Clock Speed: 167 MHz
              1 | Extended Memory: 31 MB (31 MB Free)
              1 | Processor: Intel CeleronA-334
              1 | CPU Clock Speed: 334 MHz
              1 | Extended Memory: 95 MB (64 MB Free)
              1 | Processor: AMD Duron(tm)-782
              1 | CPU Clock Speed: 782 MHz
              2 | Processor: AMD Athlon(tm) (undistinguished model)-1244
              2 | CPU Clock Speed: 1244 MHz
              1 | Processor: AMD Duron(tm)-834
              1 | CPU Clock Speed: 834 MHz
              1 | Processor: AMD Athlon(tm) (undistinguished model)-1037
              1 | CPU Clock Speed: 1037 MHz

              und so weiter
              wenn die geoordnet wären und absätze hätten wäre das nch viel besser. und man müsste den suchbegriff eingeben können.

              Danke