2017-02-01 2 views
0

Ich würde gerne wissen, ob es trotzdem festzustellen ist, ob eine Gruppe von Wörtern in einer Zeichenfolge mit PHP erwähnt wurde. Nehmen wir an, dass es erlaubt ist, "Angriff" zu sagen, aber "Angriff + Gewehr" ist nicht. So ...Erkennen, ob eine Gruppe von Wörtern erwähnt wurde

"I saw an assault" sollte nicht

"I bought an assault rifle" nachgewiesen werden sollte

"I assaulted a bank with my rifle" sollte auch

+0

Es gibt nichts, was Sie zuverlässig tun können. Sie können überprüfen, ob alle Wörter in einer bestimmten Wortgruppe in der Zielzeichenfolge vorhanden sind, aber Sie haben immer noch Probleme damit, entweder zu streng zu sein (angenommen, dass "angegriffen" "Angriff" enthält), aber auch das Wort "traube" enthält "Vergewaltigung"; ein Beispiel, das ich tatsächlich irgendwo gesehen habe) oder zu nachsichtig (finde nur ganze Wörter, aber vermisse gültige Variationen wie Angriffe -> Überfälle oder Angriffe). Auch würde keiner von beiden Zeichenersetzungen wie 'assauIt' stoppen, wo das' L' durch ein großes'i' ersetzt wurde (verdammte Serif-Fonts nach dem Speichern). –

+0

Ok, vielen Dank! –

Antwort

2

Ein gemeinsamer Weg wäre es, die Eingabezeichenfolge zu spalten (dh "assault+rifle") durch "+" s, dann Überprüfen Sie für jeden von denen, ob es im Originaltext ist.

// Assuming: 
$text; 
$words; 

// Iterating through the splitted $words 
foreach(explode("+", $words) as &$word) { 
    // Checking if the text contains our word 
    if (strpos($text, $word) === false)) { 
     die("Allowed"); 
    } 
} 
echo "Not Allowed"; 
+0

Das Beispiel stoppt beim ersten gefundenen Wort, nicht wenn alle Wörter gefunden wurden. –

+0

Werden Sie eine Lösung vorschlagen? @ JonathanKuhn –

+2

Wickeln Sie es in einer Funktion und Schleife über jedes Wort, und wenn man nicht gefunden wird, gibt false zurück. Sonst wurden alle gefunden und kehren wahr zurück. Ihr Konzept ist jedoch korrekt, Sie müssen jedes Wort einzeln prüfen, aber Sie müssen alle Wörter überprüfen, um sicherzustellen, dass sie alle existieren, bevor Sie annehmen, dass es nicht erlaubt ist. –

Verwandte Themen