Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [klasa] badWords.class5.php
Forum PHP.pl > Inne > Oceny
Athlan
Klasa informuje o badwords i zlicza je:
http://phpfi.com/141000

przykład uzycia jest w załączniku ale podam jeszcze:
  1. <?php
  2. // instancja klasy
  3. $badWords = new badWords;
  4. // wprowadzny string
  5. $string = 'ku rwaaaaaaaa mac, chcesz w piz_de, w pier-dol Ci sie nie dostało kurw.a mać?!';
  6. // filtrujemy string
  7. $checkString = $badWords->checkString($string);
  8. // warunek na podstawie otrzymanych wników
  9. if($checkString[0])
  10. {
  11. echo'nie przeklinaj, '.$checkString[1].' przekleństw w Twoim ciągu znaków';
  12. }
  13. else
  14. {
  15. echo $string;
  16. }
  17. ?>


zapraszam do ocen... pisane z nudów sad.gif moze sie komus przyda smile.gif
Diablos
Bad ereg ;p
hwao
Fajny skrypt!

Proponuje tylko przestawic z eregi na preg_match sa okolo ~4 razy szybsze
dr_bonzo
Przydalo by sie ladowanie tablicy wyrazow do obiektu a nie zapisywanie ich na sztywno w klasie.
Cysiaczek
Przyłączę się do dr_bonzo - dodaj obsługę źródeł danych. gdybys ta klase podpiął pod większą całość, to administrowac tymi słowami możesz teraz tylko z poziomu kodu.

Ogólnie podoba mi się smile.gif
Athlan
http://phpfi.com/141208

- wprowadzone dodawanie słów z poziomu kodu do tablicy oraz z dowolnego miejsca do bazy danych...
- sprawdzanie słów w bazie danych bądź w tablicy klasy

do badWords wykonujemy zapytanko:
  1. CREATE TABLE `badWords` (
  2. `badID` INT( 11 ) NOT NULL AUTO_INCREMENT ,
  3. `badWord` VARCHAR( 50 ) NOT NULL ,
  4. PRIMARY KEY ( `badID` ) ,
  5. INDEX ( `badWord` )
  6. );


w kodzie możemy podać:
  1. <?php
  2. // dodanie patternu
  3. $badWords->newPattern(array('pizd.*'));
  4. ?>

dla dodanie do tablicy... no i pozostało jeszcze dodanie do bazy danych:
  1. <?php
  2. // dodanie patternu
  3. $badWords->newPattern(array('pizd.*'), $mysqlHandler);
  4. ?>


jeżeli chcemy sprawdzić czy słowa są w tabeli mysql, rozmy lekkie zmienki, do funkcji sprawdzającej słowa dodajemy tylko handler połączenia:
  1. <?php
  2. // filtrujemy string
  3. $checkString = $badWords->checkString($string, $mysqlHandler);
  4. ?>


oraz ustawiamy zmienną:
  1. <?php
  2. /*
  3.  * Ustawiamy, czy złe słowa mają być brane z tablicy $this->badWords, czy może z tabeli mysql
  4.  * 
  5.  * @access private
  6.  * @param bool
  7.  */
  8.  
  9. private $useDB = TRUE;
  10. ?>


pozdrawiam smile.gif

---EDIT---
no i kolejna zmianka bo zupełnie zapomniałem o pierwszej uwadze @hwao... no więc zamienione ereg na preg_match()

http://phpfi.com/141221
SHiP
Bardzo fajna klasa winksmiley.jpg lekka i działa jak nalezy... Problem tkwi w szczegółach winksmiley.jpg Klasa nie obsluguje wyjątków typu
  1. <?php
  2. $string = 'nie podsłuchuj chłopcze!';
  3. ?>


Wywala przekleństwo ;]
Athlan
@SHiP bardzo cenna uwaga... jak bede w domciu to dopisze smile.gif

no tak, ale można wywalić element "huj.*" z tablicy i bedzie grało tongue.gif
chyba dla tego wyrazu są wyjątki, wieć nie trzeba go jako-tako filtrować

pozdrawiam smile.gif
Speedy
Bardzo fajna klasa smile.gif.

ps. W tej tablicy warto także 'jeb.*' uwzględnić winksmiley.jpg.
dr_bonzo
Uniezaleznij sie od mysql'a, utworz druga klase odpowiedzialna za pobieranie listy slow z "jakiegos zrodla" (np. mysql) i niech zwraca te slowa jako tablice po wywolaniu

$zrodloSlow->getWords()
Athlan
@dr_bonzo masz na myśli to, żeby pobrać słowa z jakiegokolwiek źródła tak? hmm nie tylko jest mysql, faktycznie. Dobra dodam, ale kazdy parsowanie XML lub innyc tam pliczków zwoich musi sobie sam dopisać po dziedziczeniu tongue.gif

zmiany niedługo wprowadzę, pozdrawiam smile.gif

---EDIT---

tak właściwie to jest już to napisane tongue.gif pobierasz sobie sam słowa z jakiegoś innego źródła i wlepiasz w funkcję w formie tablicy :
  1. <?php
  2. // dodanie patternu
  3. $badWords->newPattern( /* tablica */ );
  4. ?>

po krzyku smile.gif

trzeba pomyśleć jeszcze nad pewnego rodzaju wyjątkami smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.