Suche in Dateien die 15263x

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Ich glaube du solltest dich erstmal mit den Grundlagen befassen. Das ist jetzt nicht böse gemeint, nur hat das Ganze so nicht viel Sinn, da es einfach an zu vielen Stellen hapern wird. Dann kannst du dir auch besser selbst helfen.
    Am besten gehst du mal die Doku im PHP-Manual durch. Da wird alles gut und verständlich erklärt.

    Fehler in deinem Schnipsel:
    $documents wird mit keinen Daten gefüttert, da du glob und foreach falsch anwendest.
    Richtig (vereinfacht):
    PHP-Code:
    $documents = array();
    foreach (
    glob('*.html') as $document) {
       
    $documents[] = $document;

    dann (ebenfalls stark vereinfacht):
    PHP-Code:
    foreach ($documents as $document) {
      
    $content strip_tags(file_get_contents($document));
    }
    // ... 
    Ich würde dir wirklich nahelegen, dich erstmal mit den Grundlagen zu befassen, damit du einen besseren Überblick hast und schneller zu eigenen Ergebnissen kommst.

    Gruß, der Grieche
    Nieder mit der Camel Case-Konvention

    Kommentar


    • #17
      http://www.php-faq.de/q/q-code-verzeichnis.html
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #18
        PHP-Code:
        foreach(glob('pfad/zum/Verzeichnis/*.html') as $filename){
            
        $daten strip_tags(file_get_contents($filename));
            if(
        strpos($daten,$_GET['s']) !== false){
                
        //Begriff wurde gefunden also einen Link drauf anlegen
                
        echo '<li><a href="'.$filename.'">bla</a></li>';
            }else{
                
        //Diese Datei enthält den Begriff nicht
                
        echo "-.-";
            } 

        Wenn schon dann so

        Gruss

        tobi
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #19
          hallo,

          danke schonmal für die vorschläge. ich werde sie mir am montag genauer ansehen. leider muss ich jetzt auf eine "geschäftreise" gehn, geht übers ganze woe.

          was ich festgetellt habe wenn ich das benutze:

          PHP-Code:
              foreach(glob('D:/xampp/xampp/htdocs/*.html') as $filename){
              
          $daten strip_tags(file_get_contents($filename));
              if(
          strpos($daten,$_GET['s']) !== false){
                  
          //Begriff wurde gefunden also einen Link drauf anlegen
                  
          echo '<li><a href="'.$filename.'">'.$filename.'</a></li>';
              }else{
                  
          //Diese Datei enthält den Begriff nicht
                  
          echo "-.-";
              } 

          bekomme ich folgende ausgabe:



          # Treffer mit hallo :
          hallo.html
          -.--.-
          er geht also noch in das else mit rein.


          und bei diesem code bekomme ich nur die ausgabe:

          Treffer mit hallo :-.-



          PHP-Code:
          $documents = array();
          foreach (
          glob('*.html') as $document) {
             
          $documents[] = $document;
          }

          foreach (
          $documents as $document) {
          $content strip_tags(file_get_contents($document));
          }
          if(
          stripos($content,$_GET['s']) !== false){
              
          //Begriff wurde gefunden also einen Link drauf anlegen
              
          echo('<li><a href="'.$document.'">'.$document.'</a></li>'.PHP_EOL);
          }else{
              
          //Diese Datei enthält den Begriff nicht
              
          echo "-.-";

          mfg
          dani

          ps: schonmal ein ganz großes danke an alle für die hilfreichen tipps !

          Kommentar


          • #20
            so ich bin wieder zurück ^^.
            ich habe heute morgen jetzt schon probiert herauszufiltern warum er auch in die else schleife geht. aber ich bekomm das nicht so gut hin. hab mit echo probiert verschiedene variablen auszugeben und zu schauen wom der fehler liegen könnte aber bis jetzt ergab sich noch nix. hat jemd einen tipp ?

            Kommentar


            • #21
              ich habe heute morgen jetzt schon probiert herauszufiltern warum er auch in die else schleife geht
              In den else-Teil geht der Code weil wohl nicht jede gefundene HTML Datei den Suchstring im Namen enthält. Es ist gewollt, dass der Code in den else-Zweig geht, wenn der Suchtext nicht im Namen enthalten ist.
              PHP-Code:
              foreach(glob('D:/xampp/xampp/htdocs/*.html') as $filename){
                  
              $daten strip_tags(file_get_contents($filename));
                  if(
              strpos($daten,$_GET['s']) !== false){
                      
              //Begriff wurde gefunden also einen Link drauf anlegen
                      
              echo '<li><a href="'.$filename.'">'.$filename.'</a></li>';
                  }else{
                      
              //Diese Datei enthält den Begriff nicht
                      
              echo 'Diese Datei enthält den Begriff nicht: '.$filename.'<br />';
                  } 

              Sollte dir die Namen anzeigen, die den Suchtext nicht enthalten. Wenn der Code dann läuft ersetzt und das echo im else einfach durch continue und die Schelife wird direkt zum nächsten Namen springen.

              Gruss

              tobi
              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

              Kommentar


              • #22
                hhmmmmm ich hab jetzt das else leer gelassen. im prinzip sowas in der art wie du hast. nur das du die nichtgefundenen auch noch ausgibst. ich möchte aber nicht nach dateinamen suchen sondern nach dateiinhalt. warum will er den suchstring dann auch im namen haben ?

                Kommentar


                • #23
                  warum will er den suchstring dann auch im namen haben ?
                  wieso denn Suchstring im Namen. file_get_contents() liest dir den Inhalt der Datei in einen String und diesen durchsuchst du nach dem Suchtext. Wenn gefunden gibst du einen Link auf die Datei aus. Bau doch einfach das continue; in den else-Zweig und es sollte funzen, so wie du es willst.

                  Gruss

                  tobi
                  Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                  [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                  Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                  Kommentar


                  • #24
                    Original geschrieben von jahlives
                    wieso denn Suchstring im Namen. file_get_contents() liest dir den Inhalt der Datei in einen String und diesen durchsuchst du nach dem Suchtext. Wenn gefunden gibst du einen Link auf die Datei aus. Bau doch einfach das continue; in den else-Zweig und es sollte funzen, so wie du es willst.

                    Gruss

                    tobi
                    danke das hat schonmal gut geklappt. aber ich habe eine frage. ist es möglich das er nur suchergebnisse anzeigt die exakt mit dem string in der datei über einstimmen ? wenn ich zb nach hallo suche zeigt er mir einen treffer in einer datei an genauso wie wenn ich nur nach h suche. oder es sollten zumindest die ersten 3 buchstaben exakt sein somit wäre die suche verfeinert. schonmal danke an euch.

                    Kommentar


                    • #25
                      wenn ich zb nach hallo suche zeigt er mir einen treffer in einer datei an genauso wie wenn ich nur nach h suche. oder es sollten zumindest die ersten 3 buchstaben exakt sein somit wäre die suche verfeinert
                      Wie bitte ? Wenn du mit strpos() nach hallo suchst, werden dir Treffer nur mit h ganz bestimmt nicht gefunden. Sonst wäre deine PHP Installation im Arsch...
                      Wenn du die Suche aber flexibler gestalten willst, dann kommst du um reguläre Ausdrücke wohl kaum herum.

                      Gruss

                      tobi
                      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                      Kommentar


                      • #26
                        also es ist so ich hab ja des script hier:


                        PHP-Code:
                            // Nur html Dateien
                            
                        foreach(glob('*.html') as $filename){
                            
                        $daten strip_tags(file_get_contents($filename));
                            if(
                        strpos($daten,$_GET['s']) !== false){
                                
                        //Begriff wurde gefunden also einen Link auf die Datei machen
                                
                        echo '<li><span style=\"color: #008000\"><a href="'.$filename.'">'.$filename.'</a></span></li>';
                            }else{
                            continue;
                                
                        //Diese Datei enthält den Begriff nicht
                                //echo '<span style=\"color: #FF0000\">Kein Treffer: '.$filename.'</span><br>';
                            


                        dann hab ich im gleichen ordner ne html datei (hallo.html) in der nur der text "hallo" steht (ohne "" ). jetzt such ich über das script nach hallo. dann zeigt er die hallo.html als treffer an. wenn ich jetzt nur ein h angebe bei der suche zeigt er mir wieder hallo.html als treffer an. wie kann das sein? ich habe ApacheFriends XAMPP (basic package) version 1.5.4a bei mir installiert.


                        mfg



                        €dit:
                        hier ein bsp:



                        das eingegebene gebe ich nur nochmal zur überprüfung aus....
                        Zuletzt geändert von dani1609; 01.12.2006, 09:55.

                        Kommentar


                        • #27
                          Ja und? Works as designed. "h" ist in "hallo" enthalten. Beschreibe mal klar und deutlich, was Du eigentlich willst.
                          Meine Vermutung: Du willst nur nach ganzen Wörtern suchen. Dann kommst Du, wie Tobi schon sagt, um reguläre Ausdrücke nicht herum.

                          LG

                          Kommentar


                          • #28
                            wenn ich jetzt nur ein h angebe bei der suche zeigt er mir wieder hallo.html
                            Du scheinst nicht zu verstehen was strpos() macht. Es sucht nach dem Suchstring und wenn du nach 'h' suchst dann wird die Fkt auch hallo.html finden, weil darin ein 'h' enthalten ist.
                            Wie ich dir auch bereits geschrieben habe,wäre in diesem Falle wo du nur ganze Treffer willst, wohl der Einsatz von regulären Ausdrücken zu empfehlen.
                            Schau dir dazu mal das Manual für preg_match() resp preg_match_all() an.

                            Gruss

                            tobi
                            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                            Kommentar


                            • #29
                              @topicstarter
                              Wenn du nur nach dem ganzen Ausdruck suchen willst böte sich ein solcher RegExp an
                              PHP-Code:
                              //ganzes Wort
                              preg_match('/\\\b'.$text.'\\\b/i',$deinString,$treffer);
                              //Wenn Treffer 0 nicht empty ist
                              if(!empty($teffer[0])){
                                  
                              //also haben wir einen Treffer
                              }else{
                                 
                              //haben wir keinen Treffer
                              }

                              //nur Wortanfang
                              preg_match('/\\\b'.$text.'\\\B/i',$deinString,$treffer);
                              //Wenn Treffer 0 nicht empty ist
                              if(!empty($teffer[0])){
                                  
                              //also haben wir einen Treffer
                              }else{
                                 
                              //haben wir keinen Treffer

                              Gruss

                              tobi
                              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                              Kommentar


                              • #30
                                @kuddeldaddeldu
                                ja ich will nach der genauen zeichenkette suchen die ich in das textfeld eingebe und in $_GET['s'] speichere. diese zeichenkette will ich dann benutzen um in dateien nach einer gleichen zeichenkette zu suchen. ist zb $_GET['s'] = "hallo" und in der datei der string hallo vorhanden dann soll ein link ausgegeben werden mit dem dateinamen in dem der treffer war. wenn ich den link klicke soll man die datei öffnen und direkt zu der stelle springen an der der string steht.




                                @jahlives

                                Danke für den Source.
                                Ich habe nun versucht diesen anzupassen an meinen Code, leider hat das nicht so ganz gefunzt.


                                PHP-Code:
                                foreach(glob('*.html') as $filename){
                                //ganzes Wort
                                preg_match('/\b'.$_GET['s'].'\b/i',$filename,$treffer);
                                //Wenn Treffer 0 nicht empty ist
                                if(!empty($teffer[0])){
                                for(
                                $i=0$i<10$i++) {
                                    
                                //also haben wir einen Treffer
                                    
                                echo "".$treffer[$i]."<br>";
                                    }
                                }else{
                                   
                                //haben wir keinen Treffer
                                }

                                der erste parameter ist ja das suchmuster und der 2te die zeichenkette nachder ich suche. nur leider hat das bei mir nicht so geklappt. ich hab dann in google was entdeckt das ich ja auch den dateinamen mitübergeben muss nur gibt dieser code nix aus.also die array ausgabe passt ja aber ich komm nicht so ganz klar wie ich ihm sage das er den string in der datei suchen soll.

                                mfg
                                dani
                                Zuletzt geändert von dani1609; 04.12.2006, 08:41.

                                Kommentar

                                Lädt...
                                X