Hi,
ich möchte, dass man in ein TExtfeld z.B. "Ich suche einen guten Forenanbieter" schreibt, und dann so wörter, wie ich, suche, einen und guten weggelassen werden, sodass nur "Forenanbieter" erkannt wird und dafür bestimmte Ergebnisse ausgegeben werden.
Wie kann ich das machen?
Nur bestimmte Wörter aus einem Textfeld erkennen
- gn#36
- Ehrenadmin
- Beiträge: 9313
- Registriert: 01.10.2006 16:20
- Wohnort: Ganz in der Nähe...
- Kontaktdaten:
Mehrere Möglichkeiten:
1. Whitelist
Du vergleichst die eingegebenen Wörter mit einer Liste von erlaubten Worten. Alles was nicht drin steht wird ignoriert.
2. Blacklist
Du vergleichst die eingegebenen Wörter mit einer Liste von verbotenen Wörtern. Alles was vorkommt wird ignoriert (so läuft das z.b. bei der Foren-Suche im phpBB, hier gibt es eine Sprachbezogene Stopwortliste schau mal bei den Sprachdateien nach search_stopwords.txt)
3. Wenn du Worte gewichten willst eine Kombination aus beiden
4. Ein regulärer Ausdruck der auf die Wörter passen muss/ nicht passen darf (ist aber letztlich nicht viel anderes, außer dass der Ausdruck gleich mehrere Wörter abdeckt).
1. Whitelist
Du vergleichst die eingegebenen Wörter mit einer Liste von erlaubten Worten. Alles was nicht drin steht wird ignoriert.
2. Blacklist
Du vergleichst die eingegebenen Wörter mit einer Liste von verbotenen Wörtern. Alles was vorkommt wird ignoriert (so läuft das z.b. bei der Foren-Suche im phpBB, hier gibt es eine Sprachbezogene Stopwortliste schau mal bei den Sprachdateien nach search_stopwords.txt)
3. Wenn du Worte gewichten willst eine Kombination aus beiden
4. Ein regulärer Ausdruck der auf die Wörter passen muss/ nicht passen darf (ist aber letztlich nicht viel anderes, außer dass der Ausdruck gleich mehrere Wörter abdeckt).
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
- gn#36
- Ehrenadmin
- Beiträge: 9313
- Registriert: 01.10.2006 16:20
- Wohnort: Ganz in der Nähe...
- Kontaktdaten:
Wenn man sowas selbst macht ist das meistens besser, dann kann man es auch hinterher. 
Vor allem wie man aus einem Textfeld ausliest, dieses im HTML Code definiert oder ein Formular abschickt solltest du selbst erarbeiten, das ist Basiswissen ohne das es nicht geht.
Die Whitelist kann man auf verschiedene Arten aufbauen, je nachdem was dir so zur Verfügung steht bzw. was du verwenden möchtest. Die eleganteste Variante arbeitet mit einer Datenbank. In dieser hättest du eine Tabelle in der die Worte der Whitelist drinstehen und mit der abgeglichen wird. Eine deutlich schneller umzusetzende Variante wäre eine einfache Textdatei in der jedes Wort (oder jeder Satz) das erlaubt ist in einer eigenen Zeile steht. Diese Variante könnte z.b. grob so aussehen:
Wie man sieht also nicht sehr aufwändig, die Filterung des Wortes habe ich mir da mal gespart. Wenn du mehrere Wörter auf deren Vorkommen überprüfen möchtest, dann kannst du das in einer Schleife machen (for, foreach, while...). Hierbei solltest du allerdings die Schleife nur um den vergleichenden Teil legen so dass nicht in jedem Durchlauf die Datei neu eingelesen wird, bei vielen Wörtern und einer langen Whitelist wird man das irgendwann merken. Die Blacklist funktioniert übrigens ganz genauso, nur dass im if Zweig das Wort verboten ist und im else Zweig erlaubt.

Vor allem wie man aus einem Textfeld ausliest, dieses im HTML Code definiert oder ein Formular abschickt solltest du selbst erarbeiten, das ist Basiswissen ohne das es nicht geht.
Die Whitelist kann man auf verschiedene Arten aufbauen, je nachdem was dir so zur Verfügung steht bzw. was du verwenden möchtest. Die eleganteste Variante arbeitet mit einer Datenbank. In dieser hättest du eine Tabelle in der die Worte der Whitelist drinstehen und mit der abgeglichen wird. Eine deutlich schneller umzusetzende Variante wäre eine einfache Textdatei in der jedes Wort (oder jeder Satz) das erlaubt ist in einer eigenen Zeile steht. Diese Variante könnte z.b. grob so aussehen:
Code: Alles auswählen
//Datei einlesen:
$file = file('./relativer/pfad/zur/datei.txt');
//Wort vergleichen:
if(in_array($wort, $file))
{
//Das Wort ist enthalten und erlaubt
}
else
{
//Das Wort ist verboten
}
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Danke.
Aber ich hab noch eine Frage:
Kann man auch z.B. einen Zeilenumbruch von alleine in "<br>" umwandeln, aber der Schreiber, diesen Tag nicht sieht.
Denn ich habe vor, dass man über ein Textfeld in ein Dokument schreibt, dass hinterher per include auf einer Seite eingefügt wird. Aber die Zeilenumbrüche müssen trotzdem da sein, weil sonst wird der Text in einer Zeile durchgeschrieben, bzw. nur in der nötigsten Anzahl von Reihen angezeigt.
Aber ich hab noch eine Frage:
Kann man auch z.B. einen Zeilenumbruch von alleine in "<br>" umwandeln, aber der Schreiber, diesen Tag nicht sieht.
Denn ich habe vor, dass man über ein Textfeld in ein Dokument schreibt, dass hinterher per include auf einer Seite eingefügt wird. Aber die Zeilenumbrüche müssen trotzdem da sein, weil sonst wird der Text in einer Zeile durchgeschrieben, bzw. nur in der nötigsten Anzahl von Reihen angezeigt.
- gn#36
- Ehrenadmin
- Beiträge: 9313
- Registriert: 01.10.2006 16:20
- Wohnort: Ganz in der Nähe...
- Kontaktdaten:
[PHP:nl2br] wäre eine Möglichkeit, einfach vor der Ausgabe auf die gewünschte Variable anwenden.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.