Kleines: Code etwas anderes gestallten

Guten Tag,

ich habe gestern Abend von einem ein Stück PHP Code bekomme, dass man mit mir via Fragen sprechen kann *fg* joa aber ich finde das ist etwas unübersichtlich und man muss da immer so viele Varianten schreiben bis man da was richtiges zustande bekommt. Meine Frage nun an euch, hättet Ihr eine Idee, wie man das anderes schreiben könnte, dass es einfach leichter ist? unter umständen sogar mit einer Datenbank?

Hier mal der Code:

<?php
 $form = "<form action='sprechen.php' method='post' name='question_bot'>
  <br><strong>Deine Frage:</strong><br><br />
  <input type='text' class='input_text' name='question' maxlength='200' value='' />
  <br /><br />
  <input type='submit' class='input_submit' name='submit' value='Fragen' />
 </form>";
if(!$_POST){
 echo $form;
} elseif($_POST['question'] == true) {
 $question = $_POST['question'];
 $question = strtolower($question);
 $question = explode(' ', $question);
 $limit = count($question);

for($i = 0; $i <= $limit; $i++){
  if(eregi('wohnst', $question[$i])){ $answer = '1'; }
  elseif(eregi('wohnort', $question[$i])){ $answer = '1'; }
  elseif(eregi('alt', $question[$i])){ $answer = '2'; }
  elseif(eregi('alter', $question[$i])){ $answer = '2'; }
  elseif(eregi('auge', $question[$i])){ $answer = '3'; }
  elseif(eregi('augen', $question[$i])){ $answer = '3'; }
  elseif(eregi('augenfarbe', $question[$i])){ $answer = '3'; }
  elseif(eregi('PHP Gott', $question[$i])){ $answer = '4'; }
  elseif(eregi('Gott', $question[$i])){ $answer = '4'; }
 }

$replace = array("1" => "Ich komme aus Köln",
                  "2" => "HeHe was geht dich das an",
                  "3" => "Meine Augenfarbe ist Blau",
                  "4" => "Na ja das weißt du doch oder?");

$answer = strtr($answer, $replace);

echo "<strong>Antwort:</strong<br />";
  if($answer == true){
   echo $answer." ;)";
  } else {
   echo "Diese Frage ist mir leider nicht bekannt. Ich gebe dir später eine Antwort, wenn ich mir was überlegt habe.";
  }
 echo $form;
} else {
 echo "<div style='color:#990000;'>Du hast keine Frage eingegeben, wie soll ich dir darauf dann antworten? Kannst du mir das bitte sagen?</div>";
 echo $form;
}
?>

Gruß,
Kleines

  1. Hallo Kleines,

    ich habe gestern Abend von einem ein Stück PHP Code bekomme, dass man mit mir via Fragen sprechen kann

    So etwas wie ELIZA (Applet)

    Meine Frage nun an euch, hättet Ihr eine Idee, wie man das anderes schreiben könnte, dass es einfach leichter ist? unter umständen sogar mit einer Datenbank?

    theorethisch ja, praktisch wird das -zumindest in naher Zukunft- nicht funktionieren.

    Der Gewinner des Loebner-Preises kann leider nur englisch. Jabberwacky

    Viele Grüße,

    Jochen

    --
    Heute schon gescribbelt?
    Scribbleboard
  2. Moin,

    Meine Frage nun an euch, hättet Ihr eine Idee, wie man das anderes schreiben könnte, dass es einfach leichter ist?

    <?php /** ungetestet!! */  
    $form = "<form action='sprechen.php' method='post' name='question_bot'>  
    <br><strong>Deine Frage:</strong><br><br />  
    <input type='text' class='input_text' name='question' maxlength='200' value='' />  
    <br /><br />  
    <input type='submit' class='input_submit' name='submit' value='Fragen' />  
    </form>";  
    if([link:http://de3.php.net/manual/de/function.isset.php@title=isset]($_POST['question']) && $_POST['question']!='') {  
            $question=[link:http://de3.php.net/manual/de/function.explode.php@title=explode](' ',[link:http://de3.php.net/manual/de/function.strtolower.php@title=strtolower]($_POST['question']));  
            $limit   =[link:http://de3.php.net/manual/de/function.count.php@title=count]($question);  
            $search  =array('wohnst','wohnort','alt','alter','auge','augen','augenfarbe','php gott','gott');  
            $s       =[link:http://de3.php.net/manual/de/function.count.php@title=count]($search);  
            $answer  =array("Ich komme aus Köln","HeHe was geht dich das an","Meine Augenfarbe ist Blau","Na ja das weißt du doch oder?");  
            $flag    =true;  
      
            for($i=0;$i<$limit;$i++){  
                    $j=0;  
                    for($n=0;$n<$c;$n++){  
                            if([link:http://de3.php.net/manual/de/function.strpos.php@title=strpos]($question,$search[$n])!==false){  
                                    echo '<strong>Antwort:</strong><br />'.$answer[$j];  
                                    $flag=false;  
                                    break(2);  
                            }  
                            $j+=$n%2;  
                    }  
            }  
            echo (($flag) ? "Diese Frage ist mir leider nicht bekannt. Ich gebe dir später eine Antwort, wenn ich mir was überlegt habe." : '');  
    }  
    else    echo "<div style='color:#990000;'>Du hast keine Frage eingegeben, wie soll ich dir darauf dann antworten? Kannst du mir das bitte sagen?</div>";  
    echo $form;  
    ?>
    

    unter umständen sogar mit einer Datenbank?

    Was willst Du in diesem Script mit einer DB lösen?

    Gruß aus Berlin!
    eddi

    1. Hallo,

      <?php /** ungetestet!! */?>

      danke erst mal für das Script, ich werde das gleich mal schauen, wenn noch was ist, dann werde ich mich hier wieder melden.

      Was willst Du in diesem Script mit einer DB lösen?

      damit meine ich, dass ich die ganzen Wörter und Antworten in eine Db lege so kann man das ja auch bequemer erweitern oder?

      Gruß,
      Kleines

      1. Re:

        Was willst Du in diesem Script mit einer DB lösen?

        damit meine ich, dass ich die ganzen Wörter und Antworten in eine Db lege so kann man das ja auch bequemer erweitern oder?

        Dafür frißt das Script bei größerer Erweiterung von $search und $answer viel zu viele Resourcen um einen "chinesischen Mann" (philosophische Atitüde aus der Kybernetik) zu erstellen.

        Gruß aus Berlin!
        eddi