Vergleich schlägt fehl :(

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

  • Vergleich schlägt fehl :(

    Guten Tag zusammen.
    Ich habe hier ein kleines Problem und zwar schreibe ich gerade meine erste php Anwendung und der Vergleich zwischen den values aus 2 arrays mit einander schlägt fehl obwohl sie == sind
    Wäre echt nett wenn mir da jemand weiterhelfen könnte.

    PHP-Code:
     if(!file_exists("Schimpfwortfilterliste.txt"))
        {
            echo 
    "Datei konnte nicht gefunden werden";
            exit;
        }
        
        
    $fp=fopen("schimpfwortfilterliste.txt","r");
        
        if(!
    $fp)
        {
            echo 
    "Datei konnte nicht geöffnet werden";
            exit;
        }
        
        
    $i=0;
        while(!
    feof($fp))
        {
            
    $zeile fgets($fp,7624);
            
    $schimpfwortfilter[$i]=$zeile;
            
    $i++;
        }
        
    fclose($fp);
        
    $anzahl=sizeof($schimpfwortfilter);
        
        
        
        
    $schimpfwortvergleich=explode(" ",$_POST["titel"]);
        
    $laenge=sizeof($schimpfwortvergleich);
        for(
    $i=0;$i<$laenge;$i++)
        {
            
            for(
    $j=0;$j<7625;$j++)
            {
            
                if(
    $schimpfwortvergleich[$i] == $schimpfwortfilter[$j])
                {
                   
                    echo 
    "Bitte keine Schimpfwörter benutzen";
                }    
            }

        } 

  • #2
    Hi,

    und warum machst du es nicht etwas simpler, wie z.B. so?!

    PHP-Code:
    function maskword($word

        
    $masked_word ""
        for(
    $i 0$i strlen($word); $i++) 
        { 
            
    $masked_word .= "*"
        } 
         
        return 
    $masked_word


    function 
    badwordfilter($text

        global 
    $badwords
         
        
    $pattern "=([-a-zA-Z0-9]*)(%s)([-a-zA-Z0-9]*)=ie"
        
    $replace "maskword('$1$2$3')"
         
        
    $text_filtered $text

        foreach(
    $badwords as $badword
        { 
            
    $text_filtered preg_replace(sprintf($pattern$badword), $replace$text_filtered); 
        } 
         
        return 
    $text_filtered


    $badwords = array("huhn""zicke""schwein""trottel"); 

    $text1 "Hey, du altes Misthuhn. Hast du der Zicke von nebenan den Schweinehund ausgetrieben? Du Volltrottelidiot!"
    $text2 "Trottel! Siehst aus wie ein altes Warzenschwein"


    echo 
    "Original: ".$text1."<br />\n"
    echo 
    "Gefiltert: ".badwordfilter($text1)."<br /><br />\n"

    echo 
    "Original: ".$text2."<br />\n"
    echo 
    "Gefiltert: ".badwordfilter($text2)."<br /><br />\n"
    Ansonsten: debugge! was genau steht dort jeweils drin!

    mfg streuner
    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
    der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.

    "Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"

    Kommentar


    • #3
      Das Problem besteht darin, dass ich das Projekt als Projektarbeit für die IHK schreibe und eigentlich nicht so der grosse Programmierer bin...
      ich weiss ungefähr im vorraus was für funktionen in dem Projekt benötigt werden aber mit den Befehlen in php hapert es ein bißchen

      Das Projekt soll für eine Werbe Agentur geschrieben werden und die wollen den Schimpfwortfilter erweiterbar halten ohne selbst coden zu können, deswegen die textdatei (und so nebenher bemerkt, deine Variante finde ich irgendwie komplizierter *schäm*)

      Desweiteren wird halt nichts auf dem Bildschirm ausgegeben obwohl die Werte in den Arrays spätestens beim 552´sten durchlauf gleich sind und der Text "Bitte keine Schimpfwörter benutzen" hätte ausgegeben werden müssen.

      Habe auch ein shot angehangen vom leicht abgeänderten code


      $schimpfwortvergleich=explode(" ",$_POST["titel"]);
      $laenge=sizeof($schimpfwortvergleich);
      for($i=0;$i<$laenge;$i++)
      {

      for($j=0;$j<7625;$j++)
      {

      if($schimpfwortvergleich[$i] != $schimpfwortfilter[$j])
      {
      echo "<p>".$j."</p>".$schimpfwortfilter[$j]." " .$schimpfwortvergleich[$i];
      echo "<p>".$i."</p>";
      echo "Bitte keine Schimpfwörter benutzen";
      }
      }
      }



      [COLOR=#000000][COLOR=#006600][/COLOR][COLOR=#CC0000][/COLOR][/COLOR]
      Angehängte Dateien

      Kommentar


      • #4
        Versuch
        PHP-Code:
        if(trim($schimpfwortvergleich[$i]) == trim($schimpfwortfilter[$j])) 
        trim() entfernt unsichtbare Zeichen, wie \n oder \r.

        PHP-Code:
        if(!file_exists("Schimpfwortfilterliste.txt"))
            {
                echo 
        "Datei konnte nicht gefunden werden";
                exit;
            }
            
            
        $fp=fopen("schimpfwortfilterliste.txt","r"); 
        Dir ist klar, dass Unixe Case-sensitiv sind und die beiden Textdateien verschieden sind (einmal Gross am Anfang, einmal nicht)
        Zuletzt geändert von SysOp; 09.05.2014, 09:20.

        Kommentar


        • #5
          Ich habe das Problem schon anders umgangen bin dir aber dennoch dankbar, dass du dich diesem Problem angenommen hast... werde es gleich mal ausprobieren ob es daran lag. dankööööö

          Kommentar

          Lädt...
          X