Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> badwords
Apo
post
Post #1





Grupa: Zarejestrowani
Postów: 426
Pomógł: 1
Dołączył: 2.10.2005

Ostrzeżenie: (0%)
-----


Witam
Napisałem do bota badwords. Ale zrobilem to troche niewydajnie bo bot sprawdza badwords przez in_array() co jest troche zle. Myślałem o preg_match ale nie wiem czy będzie wydajnie robić pętle całej tablicy z badwords i poruwnywać wiadomość od użytkownika czy tam gdzieś nie ma tego słowa. Napiszcie jak wy byście to zrobili (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
konys
post
Post #2





Grupa: Zarejestrowani
Postów: 100
Pomógł: 7
Dołączył: 5.11.2005

Ostrzeżenie: (0%)
-----


Kiedyś szukałem skryptów, które cenzurowałyby tekst lepiej niż badwordfiltry podmieniające uprzednio wpisane na sztywno słowa. Skleciłem cenzora opartego na wyrażeniach regularnych odpornego na wprowadzanie krzaków w stylu "n_i_e_c(e)n_zuralny" - po prostu usuwa wszystko co nie jest literą lub spacją. Wiąże się to z dwoma problemami - jeśli wprowadzi się "n i e c e n z u r a l n y" - to cenzor to łyknie. Można zdefiniować wyrażenie regularne, które wyszukiwałoby słów niecenzuralnych rozbitych spacjami, jednak znacznie zmniejszyłoby to wydajność. Drugim problemem są błędy interpunkcyjne. Poprawnie po znaku przestankowym powinna znaleźć się spacja, jeśli jednak ktoś o niej zapomni, dwa sąsiadujące ze sobą wyrazy po połączeniu mogą okazać się słowem niecenzuralnym (np. "wyrzuci;Pozdrowionka" (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) )
Co do wydajności - przy zagmatwaniu języka polskiego czasem wyrażenia regularne mogą być wydajniejsze od wpisywania pełnej tablicy słów do podmiany. Na przykład chcąc usunąć wszystkie słowa zawierające "bomb", mamy możliwość zdefiniowania prostego wyrażenia regularnego, lub tablicy słów zawierającej między innymi: bomba, bomby, bombom, bombami, bombowy, bombowa, bombowe, bombardowanie, bombardować, zbombardować, zbombardowany...
Używanie wyrażeń regularnych ma tę wadę, że usuniemy faktycznie wszystkie słowa zawierające podsłowo "bomb". Jeśli więc chcemy zezwolić na użycie słowa "bombastyczny" - musimy umieścić to słowo w osobnej tablicy słów dopuszczalnych.

Ok. dość wodolejstwa - efekt mojej pracy można przetestować i ściągnąć pod adresem: http://www.webforms.pl/cenzor/
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 8.10.2025 - 16:39