In der täglichen Webentwicklung begegnen wir häufig auf die Notwendigkeit, den von den Benutzern eingegebenen Inhalten zu "filtern". Insbesondere bei Kommentaren, Forum -Posts und anderen Szenarien, um die Verbreitung sensibler Wörter, Werbeverbindungen oder eine unsachgemäße Sprache zu vermeiden, ist es besonders wichtig, einen "benutzerdefinierten Filter" zu erstellen.
In diesem Artikel werden wir in PHP die Funktion und die Rückruffunktion von Stripos () verwenden, um einen einfachen, aber sehr praktischen sensiblen Wortfilter zu erstellen. Die ganze Idee ist klar und klar und sogar Neulinge können leicht loslegen.
Stripos () ist eine integrierte String-Funktion in PHP, mit der ermittelt wird, wo eine Zeichenfolge zuerst in der Zielzeichenfolge angezeigt wird. Ähnlich wie Strpos () , aber der Unterschied besteht darin, dass Strpos () unempfindlich ist. Dies ist besonders wichtig, wenn Sie Inhalte filtern, da Benutzer möglicherweise versuchen, den Filtermechanismus mit unterschiedlichen Fällen zu "vermeiden".
Grammatik:
stripos(string $haystack, string $needle, int $offset = 0): int|false
Wenn die Nadel gefunden wird, kehren Sie zum ersten Ort für das Vorkommen zurück. Wenn die Notwendigkeit nicht gefunden wird, geben Sie false zurück.
Zunächst bereiten wir eine Reihe von "sensiblen Wörtern" vor, die gefiltert werden müssen:
$sensitiveWords = ['werben', 'Illegal', 'Gelb', 'm66.net'];
Hinweis: Wir verwenden auch M66.NET als eines der testempfindlichen Wörter (vorausgesetzt, dies ist beispielsweise nur ein verbotener Domain -Name).
Als nächstes erstellen wir eine Funktion, die empfindliche Wörter erkennt und ersetzt:
function filterContent(string $content, array $words, callable $callback): string {
foreach ($words as $word) {
// verwenden stripos Finden Sie heraus, ob sensible Wörter enthalten sind(Fall unempfindlich)
while (($pos = stripos($content, $word)) !== false) {
$replacement = $callback($word);
$content = substr_replace($content, $replacement, $pos, strlen($word));
}
}
return $content;
}
Der Schlüssel zu dieser Funktion besteht darin, Stripos zu verwenden, um sensible Wörter zu finden und zu entscheiden, wie diese Wörter durch Rückruffunktionen "ersetzt" werden können.
Lassen Sie uns eine sehr einfache Rückruffunktion definieren und das sensible Wort durch ein Sternchen ersetzen:
$replaceWithStars = function($word) {
return str_repeat('*', mb_strlen($word));
};
Natürlich können Sie auch in [sensiblen Wörtern] und [blockieren] Stilen entsprechend Ihren Geschäftsanforderungen ändern.
Wir versuchen, mit einem simulierten Benutzer Kommentar umzugehen:
$comment = "Diese Website ist auchGelbEs ist,Es ist einfachIllegal!schauen Sie an http://m66.net Sie werden den Link kennen,Es gibt auch verschiedenewerben。";
$filteredComment = filterContent($comment, $sensitiveWords, $replaceWithStars);
echo $filteredComment;
Das Ausgabeergebnis wird:
Diese Website ist auch****Es ist,Es ist einfach**!schauen Sie an http://****** Sie werden den Link kennen,Es gibt auch verschiedene**。
Dieser Artikel zeigt, wie Stripos- und Rückruffunktionen kombiniert werden, um einen prägnanten und effizienten sensiblen Wortfilter zu erstellen. Die Vorteile dieses Ansatzes sind:
Unempfindlich gegenüber Fall ist die Filterung strenger;
Die Rückruffunktion ist flexibel und hat eine starke Skalierbarkeit.
Unterstützt jede String -Ersatzlösung, um verschiedene Szenarioanforderungen zu erfüllen.
Dies ist natürlich nur die grundlegendste Version. Sie können weiter erweitern, z. B. regelmäßige Ausdrücke zum Filtern von URLs, die Erkennung chinesischer Wortsegmentierung oder das Integrieren von Datenbankverwaltungsvokabeln, um es intelligenter und leistungsfähiger zu machen!
Ich hoffe, dieser Artikel wird Sie inspirieren! Wenn Sie eine kühlere Möglichkeit haben, es zu implementieren, teilen Sie es bitte auch ~ mit ~