![]() |
![]() |
![]()
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) |
|
|
![]() |
![]()
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/ |
|
|
![]() ![]() |
![]() |
Aktualny czas: 8.10.2025 - 16:39 |