 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
24.06.2005, 21:03
|
#1
|
|
TP-Member
Registriert seit: May 2005
Ort: Eburon
|
Schlüsselworte?
Hi³
Jetzt dachte ich endlich das ich es verstanden hätte, und schon stehe ich vor einer neuen Schwierigkeit...
Ihr kennt sicherlich Eliza - eine Art reaktiver Logik die auf bestimmte Schlüsselworte reagiert. Array's, Strings - ich habe ein Inputfeld in welchem ein Besucher eine Frage formulieren kann - aber mein Script klappt nicht!
Es wird immer direkt das erste eingegebene Wort ausgewertet, ohne das die übrigen Worte überhaupt zur Kenntnis genommen werden.
Muss ich da eine while Schleife einsetzen, oder wie gehe ich da am besten vor?
__________________
Explantierte Gedanken
StGB SS328 Absatz 2.3: Mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe wird bestraft, wer eine nukleare Explosion verursacht
|
|
|
24.06.2005, 21:09
|
#2
|
|
TP-Specialist
Registriert seit: Mar 2005
Ort: Unterfranken
|
Und wie sieht dein Code aus? Sorry -- meine telepathischen Fähigkeiten lassen nach...
|
|
|
24.06.2005, 21:16
|
#3
|
|
TP-Member
Registriert seit: May 2005
Ort: Eburon
|
Immer diese Telepathen - schlimm...
Code:
<?
# Stichworte
$_001 = ("Test");
$_001 = ("Test2");
$_001 = ("Test3");
# Antworten
$a000 = "Testantwort 1";
$a001 = "testantwort 2";
$a002 = "Testantwort 3";
$a003 = "Testantwort 4";
echo "<form method=POST>";
echo "<textarea rows=10 name=antwort cols=50 class=t1>";
if($frage >= Test) { echo "$a003 "; }
elseif ($frage >= Test2) { echo "$a001"; }
elseif ($frage >= Test3) { echo "$a002"; }
else { echo "$a000"; }
echo "</textarea><br>";
echo "<input type=text name=frage size=50>";
echo "<input type=submit value=ask name=fragen>";
echo "</form>";
?>
</body>
</html>
Ich will das ganze über if else, bzw. elseif Abfragen realisieren - scheint mir - logisch, am einfachsten nachvollziehbar zu sein.
Nur mir fehlt der entsprechende Operator...
Die Fragen, bzw. Antworten werde ich später auslagern...
__________________
Explantierte Gedanken
StGB SS328 Absatz 2.3: Mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe wird bestraft, wer eine nukleare Explosion verursacht
|
|
|
24.06.2005, 22:20
|
#4
|
|
TP-Veteran
Registriert seit: Oct 2002
Ort: Übach-Palenberg
|
Zitat:
# Stichworte
$_001 = ("Test");
$_001 = ("Test2");
$_001 = ("Test3");
|
Du überschreibst jedes mal die Variable wieder, hat das irgendeinen Sinn?
__________________
Grüße aus Übach-Palenberg
Tim
WEB.ASSISTANTS IT-SOLUTIONS
www.web-assistants.de
Hängt das doch mal an eine beliebige PHP-Datei: ?=PHPE9568F36-D428-11d2-A769-00AA001ACF42
|
|
|
24.06.2005, 22:30
|
#5
|
|
TP-Member
Registriert seit: May 2005
Ort: Eburon
|
Nicht wirklich, aber ich hatte zuvor die Variablen nocheinmal überarbeitet, bemerkt das ich wieder am Anfang stand und einfach mal C&P walten lassen.
Daher die gleichen Variablen...
Habe gerade im Netz preg_match_all gefunden - gibt es da noch Alternativen zu?
__________________
Explantierte Gedanken
StGB SS328 Absatz 2.3: Mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe wird bestraft, wer eine nukleare Explosion verursacht
|
|
|
24.06.2005, 22:36
|
#6
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
he iron,
der Code ist voller Fehler.
füg am Anfang mal error_reporting(E_ALL); ein, dann bekommst Du sie alle angezeigt.
|
|
|
24.06.2005, 23:26
|
#7
|
|
TP-Member
Registriert seit: May 2005
Ort: Eburon
|
Oky...
Code:
<?
# Stichworte
$boese = "Trottel";
$nett = "Hallo";
# Antworten
$treffer0 = "Keine Ahnung";
$treffer1 = "Selber";
$treffer2 = "Hallo du";
echo "<form>";
echo "<textarea rows=10 name=antwort cols=50 class=t1>";
if($senden) {
if($frage == strrchr($frage,"$boese")) { echo"$treffer1"; }
elseif ($frage == strrchr($frage,"$nett")) { echo"$treffer2";}
else { echo"$treffer0";}
}
echo "</textarea><br>";
echo "<input type=text name=frage size=50>";
echo "<input type=submit value=ask name=senden>";
echo "</form>";
?>
Und es klappt immer noch nicht...
Schreibe ich "hey, Hallo" wird Hallo nicht gefunden und es kommt wieder zu "Keine Ahnung" - scheint bei mir ein Natürlicehr Zustand zu werden... *seufz*
__________________
Explantierte Gedanken
StGB SS328 Absatz 2.3: Mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe wird bestraft, wer eine nukleare Explosion verursacht
|
|
|
25.06.2005, 00:22
|
#8
|
|
TP-Specialist
Registriert seit: Mar 2005
Ort: Unterfranken
|
Hmm. Ich bin mir nicht sicher, wie du dir das ganze vorgestellt hast.
1. strrchr($a, $b) durchsucht den String $a nach dem letzten Vorkommen des ersten Zeichens im String $b und liefert alles von dem Zeichen bis zum Ende des Strings. Das heißt also, strrchr('Hallo Harry', 'Hallo') liefert den String 'Harry'.
2. Ein String, der aus einem Texteingabefeld stammt, enthält auch das Zeichen für einen Zeilenumbruch. Wenn der User in einem Eingabefeld "Hallo" eingibt, so ist die Bedingung $eingabefeld=="Hallo" falsch. Dafür gibt's die Funktion trim().
3. Was ist mit Groß- und Kleinschreibung? Die Bedingung "hallo"=="Hallo" ist auch falsch.
...und so weiter und so fort.
|
|
|
25.06.2005, 00:25
|
#9
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
Code:
if($senden) {
if(strpos($frage,$boese)) { echo $treffer1; }
elseif (strpos($frage,$nett)) { echo $treffer2;}
else { echo $treffer0;}
}
Allerdings ist hier Gross- und Kleinschreibung relevant. Willst Du das ausschalten, musst Du alles mit strtolower() konvertieren.
|
|
|
25.06.2005, 00:32
|
#10
|
|
TP-Member
Registriert seit: May 2005
Ort: Eburon
|
Zitat:
|
Zitat von St@eff.en
Allerdings ist hier Gross- und Kleinschreibung relevant. Willst Du das ausschalten, musst Du alles mit strtolower() konvertieren.
|
Code:
if($senden) {
$klein = "$frage";
$klein = strtolower($klein);
if(strpos($klein,$boese)) { echo $treffer1; }
elseif (strpos($klein,$nett)) { echo $treffer2;}
else { echo $treffer0;}
}
ES KLAPPT!!! *hüpf*
Steffen - ich könnte dich küssen!
Danke 
__________________
Explantierte Gedanken
StGB SS328 Absatz 2.3: Mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe wird bestraft, wer eine nukleare Explosion verursacht
|
|
|
25.06.2005, 13:50
|
#11
|
|
TP-Member
Registriert seit: May 2005
Ort: Eburon
|
Es klappt!
Und schon wieder taucht ein neues Problem auf - langsam verliere ich den Mut...
Ist es machbar das auch zwei oder mehr Schlüsselworte innerhalb des Strings erkannt werden - unabhängig von ihrer Position im String?
Ich liebäugle wieder mit Operatoren, bin mir aber - nach etlichen Fehlversuchen - nicht mehr sicher ob ich damit auf dem richtigen Wege bin...
__________________
Explantierte Gedanken
StGB SS328 Absatz 2.3: Mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe wird bestraft, wer eine nukleare Explosion verursacht
|
|
|
25.06.2005, 14:19
|
#12
|
|
TP-Specialist
Registriert seit: Mar 2005
Ort: Unterfranken
|
Am Besten arbeitest du mit Perl-Compatible Regular Expressions (PCREs). Informationen dazu findest du im PHP-Manual.
|
|
|
25.06.2005, 15:18
|
#13
|
|
Guest
Registriert seit: Aug 2002
|
PHP-Code:
if($senden) {
$klein = "$frage";
$klein = strtolower($klein);
if(strpos($klein,$boese)) { echo $treffer1; } // Bei strpos() == 0 wird er nichts finden, daher müsste die Abfrage so lauten: strpos(...) !== false.
elseif (strpos($klein,$nett)) { echo $treffer2;}
else { echo $treffer0;}
}
Diese Konstruktion kannst du auch ohne Regex ausbauen, damit es mehrmals durchlaufen wird. Mit einer Schleife umgeben und die aktuelle Position merken, an der die neue Suche beginnen soll. Fertigen Code schreibe ich aber aus Prinzip nicht, bitte versuch's selbst. 
|
|
|
25.06.2005, 15:21
|
#14
|
|
TP-Member
Registriert seit: May 2005
Ort: Eburon
|
Ich wills ja lernen, darum frage ich auch nicht nach fertigem Code...
Danke für den Hinweis! 
__________________
Explantierte Gedanken
StGB SS328 Absatz 2.3: Mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe wird bestraft, wer eine nukleare Explosion verursacht
|
|
|
26.06.2005, 10:25
|
#15
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
Zum lernen würde ich erstmal ohne die regulären Ausdrücke arbeiten, da muss man sich gesondert einarbeiten, und viele verschreckt der Syntax.
Vieles lässt sich auch mit den normalen PHP Boardmitteln lösen, wie z.B. die Suche in Strings.
So kannst Du z.B. alle Suchwörter in ein Array ablegen:
$searchfor=Array("wort1","wort2");
Dann durchläufst Du das Array und suchst nach den Begriffen:
PHP-Code:
for($i=0;$i<count($searchfor);$i++) {
$pos=strpos(strtolower($frage),strtolower($searchfor[$i]));
if($pos) {
echo $treffer;
break;
}
}
Natürlich kann man das auch mit preg_match einfacher lösen, aber dazu muss man eben den Syntax der RegEchsen kennen.
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 12:54 Uhr.
|
 |