Michael W.: Suchen und zählen

hallo,

ich bin immer noch an dieser sache dran und jetzt habe ich auch einen groben plan:

ich möchte nach einem wort suchen und die zahl der suchergebnisse in einer variablen speichern.
d.h.:

textteil1
textteil1
textteil2
textteil1
textteil2
textteil3
textteil3

und das script soll mir jetzt die anzahl (nämlich in diesem fall "3") in der variablen $result speichern, wenn ich nach texteil1 suche.

also das wort wo nach ich suche soll definierbar sein und das script sucht nach diesem wort und speichert nur die anzahl in der variablen $result1 - es sollten aber 2 suchbegriffe definierbar sein (wenn das keine umstände macht)

Danke

  1. is der text  in ner textdatei?

    1. jau. das ist in einer .log - datei

      1. jau. das ist in einer .log - datei

        prboier mal:

        $datei=fopen("xy/xy/xy.log","r");//öffnet die datei ("r"=nur lesen)
        $inhalt=fgets($datei,1000000000000);//liest ein zeile aus mit zeichenanzahl 1000000000000...dürfte reichen...
        $counter++;
        //zeile für zeile wird ausgelesen
        while($inhalt){
         $wort=strtok($inhalt," ");
         //jede zeile wird durch trennung am leerzeichen in einzelne strings
         //zerlegt und geprüft ob das wort im teilstring enthalten ist
        //für ein wqeiteres wort einfach ne neue if abfrage und nen neuen
        //counter
         while($wort){
           if(strstr($wort,"SUCHWORT")) $counter++;
           $wort=strtok(" ");
            }
         $inhalt=fgets($datei,1000000000000);

        }

        kann sein da hier und da ein paar tippfelher sind aber so in der art müßte es klappenr

        1. also irgendwas stimmt da nicht:

          <?php
          $datei=fopen("total/total.log","r");
          $inhalt=fgets($datei,10000);
          $counter++;
          while($inhalt){
           $wort=strtok($inhalt," ");
           while($wort){
             if(strstr($wort,"486")) $counter++;
             $wort=strtok(" ");
              }
           $inhalt=fgets($datei,10000);
          }
          print "wort: ";
          echo $wort;
          print "<br>datei :";
          echo $datei;
          print "<br>counter :";
          echo $counter;
          print "<br>counter++ :";
          echo $counter++;
          print "<br>inhalt :";
          echo $inhalt;
          ?>

          bei den ausgaben passiert folgendes:

          wort:
          datei :Resource id #1
          counter :1
          counter++ :1
          inhalt :

          ?? da stimmt wohl was nicht.

          1. wort:
            datei :Resource id #1
            counter :1
            counter++ :1
            inhalt :

            ?? da stimmt wohl was nicht.

            ääähh also datei kannst du nicht wirklich auslesen, das ist nur eine art zeiger/verweis auf die datei, wort ist nicht wirklich interresant und müßte wenn dan in der 2. whiile schleife stehen und $counter++ sthet für $counter=$counter+1 !!!!!!!!!!!

            1. ääähh also datei kannst du nicht wirklich auslesen, das ist nur eine art zeiger/verweis auf die datei, wort ist nicht wirklich interresant und müßte wenn dan in der 2. whiile schleife stehen und $counter++ sthet für $counter=$counter+1 !!!!!!!!!!!

              ja was kan ich denn da machen ?
              ich habe halt alle variablen mal mit einem echo vershen um zu ghucken was rauskommt.

              was können wir da jetzt noch machen. ich hab mal ein ischen was umgeschrieben:

              <?php
              $datei=("total/total.log");
              if (file_exists($datei)){
              $inhalt=($datei);
              $counter++;
              while($inhalt){
               $wort=strtok($inhalt," Processor: ");
               while($wort){
                 if(strstr($wort," ")) $counter++;
                 $test=strtok(" ");
                  }
               $inhalt=($datei);
              }
              print "wort: ";
              echo $wort;
              print "<br>datei: ";
              echo $datei;
              print "<br>test: ";
              echo $test;
              print "<br>counter: ";
              echo $counter;
              print "<br>inhalt: ";
              echo $inhalt;
              }
              ?>

              fehler in line 9:
              "if(strstr($wort," ")) $counter++;"

              1. versuchs mal so, so müßtest du alle wörter in deiner datei bekommen

                <?php
                $datei=("total/total.log");
                if (file_exists($datei)){
                $dateiZeiger=fopen($datei);

                $inhalt=fgets($dateiZeiger,100000000);
                   $counter=0;

                while($inhalt){
                $wort=strtok($inhalt," ");

                while($wort){
                    echo "$wort <br>";
                    if(strstr($wort,"Processor:")) $counter++;
                    $wort=strtok(");

                }

                $inhalt=fgets($dateiZeiger,100000000);

                }
                print "wort: ";
                echo $wort;
                print "<br>datei: ";
                echo $datei;
                print "<br>test: ";
                echo $test;
                print "<br>counter: ";
                echo $counter;
                print "<br>inhalt: ";
                echo $inhalt;
                }
                ?>

                1. Hi Freaks,

                  wieviele Räder hat Euer Server inzwischen?

                  Läuft das Ganze nicht auf einem Linux-Server?

                  Da würde ich kackfrech die Betriebssystem-Routine vom Klo *Äh Verzeihung* wc benutzen...

                  Vorher ein bisschen "grep"

                  Und das Ergebnis dann im Browser ausgeben.

                  Oder?

                  Gruß

                  Tom

                2. Das funktioniert so nicht.
                  erklär mir einfach mal wie ich für einen such begriff einen counter mache - den rest bekomme ich schon so hin
                  ich möchte nur den suchbegriff vorher definieren und den counter pro befund eins hochzählen lassen. gehen wir noch weiter zurück wie zähle ich einen counter hoch über $counter++ oder - nur muss das denn nicht in einer textdatei wie bei einem textcounter abgespeichert werden ? - egal.
                  dann müssten wir doch dem script nur sagen wonach es suchen soll:
                  <?php
                  a$ = 'wort1';
                  b$ = 'wort2';
                  ...
                  if(eregi($a,$datei[$i])) $1 = $datei[$i];
                  if(eregi($b,$datei[$i])) $2 = $datei[$i];
                  ...
                  ?>

                  dazu komt eine schleife die pro befund den counter sagt: "hier, zähl mal +1".

                  <?php
                  $counter = '0';
                  $a = 'suchwort';
                  $direct = 'pfad/datei.log';
                  $datei = file ($direct);
                  for($i=0;$i<count($datei);$i++)
                  {
                  if(eregi($a,$datei[$i])) $array[0][] = $datei[$i];
                  }
                  while(list($key,$val)=each($array[0])) {
                  $counter++;
                  }
                  echo $counter;
                  ?>

                  und schon habe ich es doch alleine geschafft :-)
                  habs gerade getestet - es geht ;)

                  Trotzdem Danke für deine hilfe mit dem Counter++

      2. ist das so schwer zu beantworten:

        ich stell mir das in etwa so vor:

        <?php
        $a = 'suchbegriff1';
        $b = 'suchbegriff2';
        if (file_exists($direct)){
        $datei= file($direct);

        • script -
          print "der suchbegriff ".$a."wurde ".$result1." mal gefunden";
          print "der suchbegriff ".$b."wurde ".$result2." mal gefunden";
          }
          }else
          {
          print "No File"
          }
          ?>

        Danke

        1. ist das so schwer zu beantworten:

          ich stell mir das in etwa so vor:

          <?php

          die suchvaribalen packst du dann in die if anweisung die nach diesem string im wort suchen soll...(  if(strstr($wort,$a))...  )

          $a = 'suchbegriff1';
          $b = 'suchbegriff2';
          if (file_exists($direct)){
          $datei= file($direct);

          • script -

          und $result ist dann halt der $counter...

          print "der suchbegriff ".$a."wurde ".$result1." mal gefunden";
          print "der suchbegriff ".$b."wurde ".$result2." mal gefunden";
          }
          }else
          {
          print "No File"
          }
          ?>

          is doch dann was du suchts oder nicht, du mußt halt die zeile auslesen und dann diese auseinander nehmen mit strtok(), um wenn das wort öfters  in der zeile ist das auch zu checken...?