Ich habe ein PHP-Programm eingeführt, das einige Sonderzeichen filtert. Lassen Sie uns nun diese Funktion zum Filtern sensibler Wörter verbessern. Damit haben wir keine Angst mehr vor dem Hinzufügen von Leerzeichen oder anderen Satzzeichen in der Mitte sensibler Wörter.
Solange Benutzer sprechen können, können Werbung oder andere sensible Wörter erscheinen. Daher muss ein Filtermechanismus für sensible Wörter hinzugefügt werden, um die „Reinheit“ der Website zu gewährleisten.
Filtermechanismus: reguläres PHP-Keyword-Matching hinzufügen
//$str sind Benutzerdaten
Funktion wordFilter($str)
{
/*
Get Sensitive Wortliste
Speichermethode für sensible Wörter:
1: In TXT-Datei speichern (allgemeine Methode)
2: Im Cache speichern (bessere Methode)
Ich speichere es in memcachd.
*/
$words = getSensitiveWords();
foreach ($words as $word)
{
$preg_letter = '/^[A-Za-z] $ /';
Za-z] ' . $word . '[^A-Za-z] )|([^A-Za-z] ' . 's )|(s ' . $word . '[^A-Za-z] )|(^' . $word . '[^A-Za-z] )|([^A-Za-z] ' . $word.'$)/';
// Sensitiv Beide Seiten des Wortes sind nicht leer
if (preg_match($pattern_1, $str))
{
$flag = TRUE;
}
$pattern_2 = '/(^' . $word . 's )|(s ' . $word . 's )|(s ' . $word . '$)|(^' . $word . '$)/';
if (preg_match($pattern_2, $str) )
{
$flag = TRUE;
}
}
else
{//Übereinstimmung mit englischer Zeichenfolge und Größe Schreiben Sie unempfindlich
$pattern = 's*/';
if (preg_match($pattern, $str))
$flag = TRUE; 🎜> 🎜> 🎜> 🎜>🎜> Es liegt ein Problem vor:
Wenn Sie einfach die Keyword-Übereinstimmung hinzufügen, können Benutzer verschiedene Anti-Filter-Methoden verwenden, einschließlich des Hinzufügens von Leerzeichen oder anderen Satzzeichen in der Mitte.
Beispiel:
Sensibles Wort: Schnalle
Nach der Benutzerverarbeitung:
Schnalle
Schnalle, Schnalle
Schnalle @ Schnalle
dies Dabei Zeitlich kann es sein, dass die reguläre Übereinstimmung des Codes nicht übereinstimmt.
Lösung:
Entfernen Sie zunächst alle Satzzeichen und einige Sonderzeichen aus den Benutzerdaten und führen Sie dann eine Beurteilung sensibler Wörter durch.
Code:
$flag_arr=array('?','!','¥','(',')',':',''',''' ,'"','"','《','》',',','...',' ',',','nbsp',']','[','~' );
$content_filter sind die verarbeiteten Benutzerdaten und führen dann den Filtervorgang wordFilter($content_filter) aus