Erweiterte Version zur PHP-sensitiven Wortfilterung

巴扎黑
Freigeben: 2016-11-10 13:34:43
Original
2075 Leute haben es durchsucht

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

Schnalle 1 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=preg_replace('/s/','',preg_replace("/[[:punct:]]/",'',strip_tags(html_entity_decode(str_replace($flag_arr,'' ,$ content),ENT_QUOTES,'UTF-8'))));

$content_filter sind die verarbeiteten Benutzerdaten und führen dann den Filtervorgang wordFilter($content_filter) aus

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage