array_intersect, Vergleich bei ganzen Sätzen

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

  • array_intersect, Vergleich bei ganzen Sätzen

    Hallo zusammen,

    für ein studentisches Projekt schreibe ich an einer kleinen Application, in der der Nutzer die Möglichkeit hat, mit einer virtuellen Person (in diesem Falle das PHP Script) Unterhaltungen führen kann.

    Dazu schreibt der Nutzer einen Satz, das PHP Skript zerlegt den Satz separiert nach Leerzeichen in Worte und vergleicht diese Worte mit einem Array an vorgegeben Worten und "antwortet" entsprechend.

    Übertrage ich keinen Satz, sondern nur ein Wort (welches sich auch im Array der vorgegebenen Worte befindet) klappt es. Gebe ich einen Satz ein, kommt es jedoch zu keiner Übereinstimmung.

    Code:
    <?php
    
    $from_user_post = "bier";              //Keine Übereinstimmung, funktioniert also
    $from_user_post = "nackt";             //Übereinstimmung, funktioniert auch
    $from_user_post = "ich bin nackt";     //KEINE Übereinstimmung, funktioniert nicht, warum?
    
    
    $words = array();
    $words = explode(" ",$from_user_post);
    
    $array_badwords = array("nackt","************");
    $result = array_intersect($words, $array_badwords);
    
    echo $result[0];
    ?>
    
    
    Habe ich etwas vergessen, nicht beachtet oder einen Denkfehler?
    Zuletzt geändert von Ghostrider28; 11.12.2013, 17:57.

  • #2
    Du hast in der Doku wohl was überlesen

    array_intersect() gibt ein Array mit allen Werten von array1, die auch in allen anderen Argumenten enthalten sind, zurück. Beachten Sie, dass die Schlüssel erhalten bleiben.
    siehst du, wenn du dir die Daten mal ausgeben lässt.

    PHP-Code:
    <?php

    $from_user_post 
    "bier";              //Keine Übereinstimmung, funktioniert also
    $from_user_post "nackt";             //Übereinstimmung, funktioniert auch
    $from_user_post "ich bin nackt";     //KEINE Übereinstimmung, funktioniert nicht, warum?
    echo '<pre>'print_r($from_user_post,1), '</pre>';

    $words = array();
    $words explode(" ",$from_user_post);
    echo 
    '<pre>'print_r($words,1), '</pre>';

    $array_badwords = array("nackt","************");
    echo 
    '<pre>'print_r($array_badwords,1), '</pre>';

    $result array_intersect($words$array_badwords);
    echo 
    '<pre>'print_r($result,1), '</pre>';
    ?>
    Der Schlüssel ist also falsch (und es können natürlich mehrere sein).

    Kommentar

    Lädt...
    X