Homer J: Könnt ihr einen Fehler erkennen?!

Hallo!

Könnt ihr einen Fehler erkennen?! Einfach bitte nur schauen, ob ein Fehler oder irgendwas enthalten ist, was Probleme machen könnte.

  
Vergleich($AlleDateien,$suchwort)  
{  
$AllWords = array();  
   foreach($AlleDateien as $AllZeilen){  
   $zeile = file($AllZeilen);  
      foreach($zeile as $wort){  
      // Zeile wird in einzelne Wörter zerlegt  
      $wort = strtok($wort," ");  
         // Wörter der Zeile werden von Code gesäubert und dem Array zugefügt  
         while ($wort !== false) {  
         $wort = strip_tags($wort);  
         array_push($AllWords,$wort);  
         }  
      }  
   }  
}  

  1. echo $begrüßung;

    Vergleich($AlleDateien,$suchwort)

    Funktionsdeklarationen beginnen mit dem Wort function.

    array_push($AllWords,$wort);

    Anstelle des Funktionsaufrufs array_push() ist es effizienter, Elemente mit $array[] = ...; anzufügen.

    Due Funktion übernimmt zwar zwei Werte, aber was gibt sie zurück? Ich sehe auch keinen Zugriff auf globale Variablen, damit das berechnete Ergebnis auch außerhalb verwendet werden kann. (Dieses Vorgehen wäre auch keine gute Idee).

    Ansonsten habe ich keine syntaktischen Fehler erkannt. Ob die Funktion das tut, was du vorhast, und keine weiteren Nebenwirkungen hat, vermag ich mangels Kenntnis der Aufgabenstellung nicht zu sagen.

    echo "$verabschiedung $name";

    1. Hallo!

      So funktioniert es, vielen Dank für eure Hilfe!

        
      function Vergleich($AlleDateien,$suchwort)  
      {  
      echo "Oder meinten Sie: <br>";  
      $AllWords = array();  
         foreach($AlleDateien as $AllZeilen){  
         $zeile = file($AllZeilen);  
            foreach($zeile as $wort){  
            // "HTML Wörter" werden in normale Wörter umgewandelt  
            $CleanWort = html_entity_decode($wort);  
            // Wörter der Zeile werden von Code gesäubert und dem Array zugefügt  
            $CleanWort = strip_tags($CleanWort);  
                  // Zeile wird in einzelne Wörter zerlegt  
                  $EinzWoerter = split(" ",$CleanWort);  
                     foreach($EinzWoerter as $EinzWort) {  
                        $EinzWort = preg_replace('~[^\w-]~', '', $EinzWort);  
                        $EinzWort = trim($EinzWort);  
                        if($EinzWort!=""){  
                        array_push($AllWords,$EinzWort);  
                        }  
                     }  
                  }  
               }  
      
      

      Gruß
      Homer J

  2. Tach.

    Könnt ihr einen Fehler erkennen?! Einfach bitte nur schauen, ob ein Fehler oder irgendwas enthalten ist, was Probleme machen könnte.

    Du meinst vermutlich nicht "ob" sondern "wo", da ich davon ausgehen, daß du diese Funktion selber schon einmal getestet hast.

    $zeile = file($AllZeilen);

      
    Du überprüfst nirgends, ob die Datei tatsächlich existiert, die du hier einlesen möchtest.  
      
    
    > ~~~php
      
    
    > $wort = strtok($wort," ");  
    > // Wörter der Zeile werden von Code gesäubert und dem Array zugefügt  
    > while ($wort !== false) {  
    >     $wort = strip_tags($wort);  
    >     array_push($AllWords,$wort);  
    > }  
    > 
    
    

    Hier hast du dir eine Endlosschleife gebaut, falls $wort nicht vorher schon FALSE ist. strtok() muß nach dem ersten Aufruf zum Initialisieren für jeden Teilstring *erneut* aufgerufen werden. Das fehlt in deiner Schleife, und deshalb schiebst du hier immer und immer wieder den gleichen String ins Array $AllWords.

    Statt strtok() kannst du auch explode() benutzen, was die ganze Sache etwas vereinfacht.

    Was die Benutzung von strip_tags() angeht ... dazu verweise ich auf
    einen alten Beitrag von wahsaga, in dem er die Sache sehr schön auf den Punkt gebracht hat. ;-)

    --
    Once is a mistake, twice is jazz.
    1. Tach.

      Statt strtok() kannst du auch explode() benutzen, was die ganze Sache etwas vereinfacht.

      Vorsichtshalber sollte ich vielleicht noch erwähnen, daß du natürlich nicht einfach den Aufruf von strtok() in deinem Skript durch explode() ersetzen kannst, da letztere Funktion etwas anders ... funktioniert. Daher auch der Link zur entsprechenden Referenz im Handbuch.

      Eine andere Sache, die später "Probleme machen könnte" ist deine inkonsistente Benennung von Variablen. Mal schreibst du sie klein am Anfang, mal groß; mal gibst du ihnen englische Namen, mal deutsche, mal eine Mischung aus beidem. Sobald deine Programme etwas umfangreicher werden und ihr gesamter Quelltext nicht mehr auf eine einzelne Seite deines Editors paßt, kann das tatsächlich zu einem Problem werden. Sowohl für dich beim Programmieren als auch für andere Leute, die möglicherweise mit deinem Code zu tun haben.

      Am besten entscheidest du dich für eine Konvention und befolgst diese dann konsequent!

      --
      Once is a mistake, twice is jazz.